azureazure-data-lakeu-sqlexecutequery

U-SQL Query data source


I would like to write query to remote Azure SQL database.

I followed the tutorial via Query Data Source - Method 1

I was successful to run the query from tutorial:

@results1 =
  SELECT *
  FROM EXTERNAL MyAzureSQLDBDataSource EXECUTE @"SELECT @@SERVERNAME AS serverName, GETDATE() AS dayTime, DB_NAME() AS databaseName";

But...

I would like to update this query to following form:

DECLARE @queryA string = @"SELECT @@SERVERNAME AS serverName, GETDATE() AS dayTime, DB_NAME() AS databaseName";

@results2 =
  SELECT *
  FROM EXTERNAL MyAzureSQLDBDataSource EXECUTE @queryA;

I got an error

E_CSC_USER_SYNTAXERROR: syntax error. Expected one of: string-literal

Any idea why I cannot use query stored in string value?

In real query I need to dynamically create query based on parameters in where statement.

Thank you in advance


Solution

  • According to this article https://msdn.microsoft.com/en-us/library/azure/mt621291.aspx you can provide only a literal, not a variable:

    EXECUTE csharp_string_literal

    The string literal contains a query expression in the language supported by the remote data source. E.g., if the data source is an Azure SQL Database, then the query string would be T-SQL.