当我尝试在一个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'
在这种情况下有人可以帮助我吗?
最好的问候 埃德尼答案 0 :(得分:1)
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)
答案 1 :(得分:1)
我发现了问题,这段代码现在运行正常。 我需要再添加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)
答案 2 :(得分:0)
问题解决了。
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)