1

カーソルとその取得データベース名とリンクサーバー名があり、それぞれでプロシージャを実行します

Declare getDBLinkServer cursor for  
select DatabaseName, LinkServerName from DBnLinkServer  
Open getDBLinkServer  
fetch next from getDBLinkServer into @DatabaseName, @LinkServerName  
While @@FETCH_STATUS = 0  
Begin  
    exec @LinkServerName.@DatabaseName.dbo.someProcedure 'some' 
    fetch next from getDBLinkServer into @DatabaseName, @LinkServerName  
End  
Close getDBLinkServer  
Deallocate getDBLinkServer

これは、Incorrect syntax near '.'どうすれば回避できますか?

4

1 に答える 1

1

動的 SQL を使用します。このような:

declare @sql nvarchar(max)
set @sql = 'exec ' + @LinkServerName + '.' + @DatabaseName + '.dbo.'+@someProcedure+' ''some''' 

exec sp_executeSQL @sql
于 2012-12-04T10:33:29.477 に答える