ADF:将动态 Where 子句作为带引号的字符串传递
ADF: Pass dynamic Where Clause as a string with quotes
我有一个查找,从 SQL 服务器 table 中检索一些记录,其中包含服务器、数据库、架构、table 名称和整个 where 子句。这些值被传递给副本数据(在 ForEach 中)在副本数据中,我尝试使用两个不同的动态查询语句,但我似乎遇到了错误。并且不知道我哪里出错了。
table 中的值:
SRC_SERVERNAME
SRC_DATABASE
SRC_SCHEMANAME
SRC_TABLENAME
SRC_WHERE_DATE_CLAUSE
SQ01
NAV
dbo
Company$Sales Invoice Header
where [Posting Date] >= '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数据库的4部分命名中,服务器name/databasename/schemaname/table名称应该用分隔‘.’
.
如果 server/database/schema/table 的名称中有 space 或其他特殊字符,则应将它们嵌入方括号 []
.
内
@concat('select * from [',item().SRC_SERVERNAME, '].[',item().SRC_DATABASENAME,'].[',item().SRC_SCHEMANAME,'].[',item().SRC_TABLENAME, '] ',item().SRC_WHERE_DATE_CLAUSE)
我有一个查找,从 SQL 服务器 table 中检索一些记录,其中包含服务器、数据库、架构、table 名称和整个 where 子句。这些值被传递给副本数据(在 ForEach 中)在副本数据中,我尝试使用两个不同的动态查询语句,但我似乎遇到了错误。并且不知道我哪里出错了。
table 中的值:
SRC_SERVERNAME | SRC_DATABASE | SRC_SCHEMANAME | SRC_TABLENAME | SRC_WHERE_DATE_CLAUSE |
---|---|---|---|---|
SQ01 | NAV | dbo | Company$Sales Invoice Header | where [Posting Date] >= '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数据库的4部分命名中,服务器name/databasename/schemaname/table名称应该用分隔
‘.’
.如果 server/database/schema/table 的名称中有 space 或其他特殊字符,则应将它们嵌入方括号
内[]
.@concat('select * from [',item().SRC_SERVERNAME, '].[',item().SRC_DATABASENAME,'].[',item().SRC_SCHEMANAME,'].[',item().SRC_TABLENAME, '] ',item().SRC_WHERE_DATE_CLAUSE)