У меня есть поиск, который извлекает несколько записей из таблицы SQL Server, содержащей сервер, базу данных, схему, имя таблицы и целое предложение where. Эти значения передаются в данные копии (внутри ForEach). В данных копии я пытался использовать два разных оператора динамического запроса, но, похоже, получаю сообщение об ошибке. И не могу понять, где я ошибаюсь.
Значения в таблице:
SRC_SERVERNAME | SRC_DATABASE | SRC_SCHEMANAME | SRC_TABLENAME | SRC_WHERE_DATE_CLAUSE |
---|---|---|---|---|
SQ01 | НАВ | ДБО | Компания $ Заголовок счета-фактуры | где [Дата публикации] >= '2021-01-01' |
Настройка источника:
Ошибка в утверждении 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)
Привет, это была просто неправильная опечатка. В коде у меня было '.'. Но спасибо.
В вашем запросе есть синтаксическая ошибка.
В четырехкомпонентном именовании базы данных SQL имя сервера/имя базы данных/имя схемы/имя таблицы должны быть разделены ‘.’
.
Если в имени сервера/базы данных/схемы/таблицы есть пробел или другие специальные символы, они должны быть заключены в квадратные скобки []
.
@concat('select * from [',item().SRC_SERVERNAME, '].[',item().SRC_DATABASENAME,'].[',item().SRC_SCHEMANAME,'].[',item().SRC_TABLENAME, '] ',item().SRC_WHERE_DATE_CLAUSE)
Привет, у меня нет проблем с подключением к серверу. Поэтому, когда я добавляю скобки, я не могу подключиться к серверу/базе данных и т. д. Следующее решение не работает, оно уже не работает с подключением
Окей, разобрался со своей ошибкой. Har, чтобы изменить имя сервера. Теперь работает нормально!
Привет, В операторе2 между именем базы данных и именем схемы отсутствует точка (.). Можете ли вы изменить его и попробовать?