Выберите из EXTERNAL через оператор LOCATION

Я хотел бы написать запрос

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

Но я получил ошибку:

Ошибка C# CS0103: имя «Тест» не существует в текущем контексте.

Если я запускаю запрос без операторов WHERE, все работает хорошо. Та же проблема в SELECT, я получаю сообщение об ошибке, если я использую имена столбцов в запросе вместо *

Любая идея, почему я не могу использовать определение местоположения и где?


person peterko    schedule 05.04.2017    source источник


Ответы (1)


Каково определение схемы таблицы dbo.test?

Я предполагаю, что таблица dbo.test в Azure SQLDB либо не содержит столбец Test, либо написана в другом регистре (обратите внимание, что U-SQL, в отличие от T-SQL, чувствителен к регистру).

person Michael Rys    schedule 05.04.2017
comment
Схема правильная. Если я запускаю запрос через оператор выполнения, все работает нормально. - person peterko; 06.04.2017
comment
Оператор EXECUTE пересылает оператор T-SQL. Я предполагаю, что ваша база данных нечувствительна к регистру, поэтому она может не заботиться о регистре. Но U-SQL чувствителен к регистру, поэтому он может получить метаданные таблицы в другом регистре. Каков результат @result = SELECT * FROM EXTERNAL MyAzureSQLDBDataSource LOCATION "dbo.test" ORDER BY "one" FETCH 1; OUTPUT @result TO "\output\test.csv" USING Outputters.Csv(outputHeader:true); ? - person Michael Rys; 06.04.2017
comment
Спасибо, это мой случай. Вы правы, в БД столбцы определены строчными буквами. - person peterko; 06.04.2017
comment
Рады, что нашли проблему :) - person Michael Rys; 07.04.2017