我有一个在 SSMS 中运行良好的动态查询,这意味着在 SSMS 中使用以下查询来获取列。
DECLARE @s NVARCHAR(MAX) = NULL
DECLARE @tablename NVARCHAR(500) = '@{pipeline().parameters.table_name}'
DECLARE @watermark NVARCHAR(1000) = '@{pipeline().parameters.watermark}'
DECLARE @period_back_from_utcnow NVARCHAR(500) = '@{pipeline().parameters.period_back_from_utcnow}'
SELECT @s = ISNULL(@s + ', ', '') + '[' + c.name + ']' + ' as [' + REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(c.name, ' ', '_'), '(', ''), ')', ''), '.', ''), '/', '') + ']'
FROM sys.all_columns c
JOIN sys.views t ON c.object_id = t.object_id
WHERE t.name = @tablename
SELECT CONCAT('SELECT ', @s, ' FROM ', @tablename) AS Query
我们可以清楚地看到 Select 语句没有获取任何列。 我尝试使用不同类型的串联和封装来更改参数,但没有成功。 我尝试更改表名变量声明,如下所示。尽管可以按照上面提到的方式创建输入 json,但使用单引号,但在表达式生成器的 SQL 中没有提取任何列:
注意:连接和链接服务正确且没有问题。
我尝试使用不同类型的串联和封装来更改参数,但没有成功。 我尝试更改表名变量声明,如下所示。尽管可以按照上面提到的方式创建输入 json,但使用单引号,但在表达式生成器的 SQL 中没有提取任何列:
期望:关于如何处理 SQL Server 数据库中包含空格的表的任何见解。当表名没有任何空格时,上面提到的脚本工作得很好,就像如果它是Currency_table,它就会工作。
有关如何处理 SQL Server 数据库中包含空格的表的任何见解。
如果您的对象名称(表名称、列名称、过程名称等)包含空格,那么您需要将其括在
[]
中。
您可以使用以下表达式在表名称周围添加
[]
。
@{concat('[',pipeline().parameters.table_name,']')}
这里我在查找查询中尝试了类似的表达式。
提供参数值作为带空格的表名。
获得正确的结果。