Tsql MS T-SQL 2008:执行openrowset SQL字符串将不起作用
运行此代码Tsql MS T-SQL 2008:执行openrowset SQL字符串将不起作用,tsql,openrowset,Tsql,Openrowset,运行此代码 DECLARE@SQL VARCHAR(2500)= 从openrowset(“”“SQLNCLI“”“”,“”“Server=Server;UID=user;PWD=PWD;”中选择z*, ''选择不同的x.PackageName 从[dw].[dbo].[dex]x 在l.executionid=x.SSISExecutionGUID''')z'''上加入[dw].dbo.log l执行(@SQL) 在“选择z”附近发出语法错误* 从openrowset('SQLNCLI','S
DECLARE@SQL VARCHAR(2500)=
从openrowset(“”“SQLNCLI“”“”,“”“Server=Server;UID=user;PWD=PWD;”中选择z*,
''选择不同的x.PackageName
从[dw].[dbo].[dex]x
在l.executionid=x.SSISExecutionGUID''')z'''上加入[dw].dbo.log l执行(@SQL)
在“选择z”附近发出语法错误*
从openrowset('SQLNCLI','Server=Server;UID=user;PWD=pw;',
“选择不同的x.PackageN”。
如果我从(@SQL)中删除参数,则错误将更改为:
名称“”选择z*
从openrowset('SQLNCLI','Server=Server;UID=user;PWD=PWD;''中,
''选择不同的x.PackageName
从[dw].[dbo].[dex]x加入[dw].dbo.log l on l.executionid=x.SSISExecutionGUID“”
)z“”不是有效的标识符。
最有趣的是,如果我将Execute更改为Print,然后手动获取打印的结果并将Execute包装在其周围,它将按预期工作并获取结果
我想这是一个疯狂的单引号问题,但我看不出来
有人有什么想法吗?我只是将打印的输出粘贴到变量赋值中,它似乎起了作用(至少就我所知,它没有给出任何语法错误)
这就是我在我的帖子中说的,它对我也有效。不,你说当你将它粘贴到
EXEC
中时它有效,而不是当你将它粘贴到变量赋值中作为我的答案时执行它!如果我的答案中的代码有效,我真的看不出问题是什么?
DECLARE @SQL VARCHAR(2500) = '
SELECT z.* from openrowset(''SQLNCLI'',''Server=server;UID=user;PWD=pwd;'',
''SELECT distinct x.PackageName FROM [dw].[dbo].[dex] x
JOIN [dw].dbo.log l on l.executionid = x.SSISExecutionGUID '') z'
EXECUTE (@SQL)