繁体   English   中英

执行动态SQL语句

[英]Executing Dynamic SQL statements

当我尝试在一个SQL Server 2008 R2中执行follow语句时

declare @tsql varchar(max), @linkedServer varchar(30), @comandoExec varchar(max)


SET @linkedServer = 'Linked_Server'
Set @tsql = 'USE Database_test
select
      left(a.NAME,30),
      left(a.FILENAME,200),
      convert(decimal(12,2),round(a.size/128.000,2)),
      convert(decimal(12,2),round(fileproperty(a.name,''SpaceUsed'')/128.000,2)),
      a.groupid
from
      [sys].sysfiles a'

SET @comandoExec =      'EXEC('''+ @tsql +''') AT '+@linkedServer

print @comandoExec
EXEC (@comandoExec)

我收到此错误消息。

Msg 102, Level 15, State 1, Line 6
Incorrect syntax near 'SpaceUsed'

在这种情况下,有人可以帮助我吗?

最好的问候埃德尼

declare @tsql varchar(max), @linkedServer varchar(30), @comandoExec varchar(max)


SET @linkedServer = 'Linked_Server'
Set @tsql = 'USE Database_test
select
      left(a.NAME,30),
      left(a.FILENAME,200),
      convert(decimal(12,2),round(a.size/128.000,2)),
      convert(decimal(12,2),round(fileproperty(a.name,"SpaceUsed")/128.000,2)),
      a.groupid
from
      [sys].sysfiles a'

SET @comandoExec =      'EXEC('''+ @tsql +''') AT '+@linkedServer

print @comandoExec
EXEC (@comandoExec)

我发现了问题,这段代码现在运行正常。 我需要再添加2个'和SpaceUsed的声明

declare @tsql varchar(max), @linkedServer varchar(30), @comandoExec varchar(max)


SET @linkedServer = 'Linked_Server'
Set @tsql = 'USE Database_test
select
      left(a.NAME,30),
      left(a.FILENAME,200),
      convert(decimal(12,2),round(a.size/128.000,2)),
      convert(decimal(12,2),round(fileproperty(a.name,''**''**SpaceUsed**''**'')/128.000,2)),
      a.groupid
from
      [sys].sysfiles a'

SET @comandoExec =      'EXEC('''+ @tsql +''') AT '+@linkedServer

print @comandoExec
EXEC (@comandoExec)

问题解决了。

declare @tsql varchar(max), @linkedServer varchar(30), @comandoExec varchar(max)


SET @linkedServer = 'Linked_Server'
Set @tsql = 'USE Database_test
select
      left(a.NAME,30),
      left(a.FILENAME,200),
      convert(decimal(12,2),round(a.size/128.000,2)),
      convert(decimal(12,2),round(fileproperty(a.name,''**''**SpaceUsed**''**'')/128.000,2)),
      a.groupid
from
      [sys].sysfiles a'

SET @comandoExec =      'EXEC('''+ @tsql +''') AT '+@linkedServer

print @comandoExec
EXEC (@comandoExec)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM