2014-02-07 91 views
0

当我尝试在一个SQL Server来执行跟随声明2008 R2执行动态SQL语句

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 '[email protected] 

print @comandoExec 
EXEC (@comandoExec) 

我得到这个错误信息。

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

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

问候 埃德尼

+0

SpaceUsed是一个变量或字符串值? –

+0

是一个字符串值 – user1466436

+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 '[email protected] 

print @comandoExec 
EXEC (@comandoExec) 
+0

嗨,别工作。我可以解决这个问题。 – user1466436

+0

这里是新代码, – user1466436

+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 '[email protected] 

print @comandoExec 
EXEC (@comandoExec) 
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 '[email protected] 

print @comandoExec 
EXEC (@comandoExec)