2014-02-07 446 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)