ADF: передать динамическое предложение Where как строку с кавычками

У меня есть поиск, который извлекает несколько записей из таблицы SQL Server, содержащей сервер, базу данных, схему, имя таблицы и целое предложение where. Эти значения передаются в данные копии (внутри ForEach). В данных копии я пытался использовать два разных оператора динамического запроса, но, похоже, получаю сообщение об ошибке. И не могу понять, где я ошибаюсь.

Значения в таблице:

SRC_SERVERNAMESRC_DATABASESRC_SCHEMANAMESRC_TABLENAMESRC_WHERE_DATE_CLAUSE
SQ01НАВДБОКомпания $ Заголовок счета-фактурыгде [Дата публикации] >= '2021-01-01'

Настройка источника:

ADF: передать динамическое предложение Where как строку с кавычками

Ошибка в утверждении 1:

A database operation failed with the following error: 'Incorrect syntax near '.'.'
Incorrect syntax near '.'., SqlErrorNumber=102,Class=15,State=1,

Ошибка для утверждения 2:

A database operation failed with the following error: 'Incorrect syntax near '.'.'
Incorrect syntax near '.'., SqlErrorNumber=102,Class=15,State=1,

Заявление 1 (запрос):

SELECT *  
FROM @{item().SRC_SERVERNAME}.@{item().SRC_DATABASENAME}.@{item().SRC_SCHEMANAME}.@{item().SRC_TABLENAME},' ',@{item().SRC_WHERE_DATE_CLAUSE}

Заявление 2 (динамический запрос с concat):

@concat('select * from ',item().SRC_SERVERNAME,'.',item().SRC_DATABASENAME,'.',item().SRC_SCHEMANAME,'.',item().SRC_TABLENAME,' ',item().SRC_WHERE_DATE_CLAUSE)

Привет, В операторе2 между именем базы данных и именем схемы отсутствует точка (.). Можете ли вы изменить его и попробовать?

NiharikaMoola-MT 19.03.2022 21:13

Привет, это была просто неправильная опечатка. В коде у меня было '.'. Но спасибо.

user3052850 21.03.2022 13:44
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
2
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В вашем запросе есть синтаксическая ошибка.

  • В четырехкомпонентном именовании базы данных SQL имя сервера/имя базы данных/имя схемы/имя таблицы должны быть разделены ‘.’.

  • Если в имени сервера/базы данных/схемы/таблицы есть пробел или другие специальные символы, они должны быть заключены в квадратные скобки [].

    @concat('select * from [',item().SRC_SERVERNAME, '].[',item().SRC_DATABASENAME,'].[',item().SRC_SCHEMANAME,'].[',item().SRC_TABLENAME, '] ',item().SRC_WHERE_DATE_CLAUSE)
    

Привет, у меня нет проблем с подключением к серверу. Поэтому, когда я добавляю скобки, я не могу подключиться к серверу/базе данных и т. д. Следующее решение не работает, оно уже не работает с подключением

user3052850 21.03.2022 13:46

Окей, разобрался со своей ошибкой. Har, чтобы изменить имя сервера. Теперь работает нормально!

user3052850 22.03.2022 11:10

Другие вопросы по теме