我需要一個鏈接服務器(SQL Server 2005中),這樣在同步執行三個動態SQL語句:執行多個動態報表一併在鏈接服務器
declare @statement nvarchar(max);
set @statement = 'exec ' + @server_name + '.' + @database_name + '.dbo.Foo;exec ' + @server_name + '.' + @database_name + '.dbo.Bar;exec ' + @server_name + '.' + @database_name + '.dbo.BigTime';
exec sp_executesql @statement;
爲了驗證這一點,我有一個鏈接的服務器的設置是鏈接到自己。
當執行本地(通過刪除@server_name
),使用SQL事件探查器,我發現它作爲一個語句執行得很好。但是,當我通過鏈接服務器執行此操作時(使用@server_name
變量),我在SQL Profiler中看到每個語句都單獨執行,每個語句後都會執行sp_reset_connection
。
跟蹤看起來是這樣的:
Audit Login ....
exec database.dbo.Foo
exec sp_reset_connection
Audit Logout
Audit Login ....
exec database.dbo.Bar
exec sp_reset_connection
Audit Logout
Audit Login ....
exec database.dbo.BigTime
exec sp_reset_connection
Audit Logout
這引起了我的問題。有沒有什麼原因可以指定給SQL Server在語句之間不調用sp_reset_connection
?
我不能修改鏈接的服務器上的任何東西。是的,重置連接會導致問題。 – 2009-11-20 14:47:10