2017-04-05 145 views
0

从外部选择,我想编写查询通过LOCATION声明

@result = 
    SELECT * //Id, Test 
    FROM EXTERNAL MyAzureSQLDBDataSource LOCATION "dbo.test" 
    WHERE Test NOT LIKE "_C"; 

但我得到了一个错误:

C# error CS0103: The name 'Test' does not exist in the current context.

如果我运行查询,而WHERE语句,一切正常。同样的问题是在SELECT,如果我在查询中使用的列名,而不是*

任何想法,为什么我不能使用位置和where语句,我得到一个错误?

回答

2

什么dbo.test表的架构定义是什么?

我假设Azure SQLDB中的dbo.test表或者不提供列测试,或者它在不同的情况下拼写(请注意,U-SQL与T-SQL不区分大小写)。

+0

的模式是正确的。如果我通过执行语句运行查询一切正常。 – peterko

+1

EXECUTE语句艘T-SQL语句了。我假设你的数据库不区分大小写,所以它可能不关心套管。但是U-SQL是区分大小写的,所以它可能以不同的方式获取表元数据。结果如下: '@result = SELECT * FROM EXTERNAL MyAzureSQLDBDataSource LOCATION“dbo.test”ORDER BY“one”FETCH 1; OUTPUT @result TO“\ output \ test.csv”使用Outputters.Csv(outputHeader:true);'? –

+0

谢谢,这是我的情况。你是对的,在DB中是用小写字母定义的列。 – peterko