мне нужно выполнить три динамических операторов SQL синхронно на связанный сервер (SQL Server 2005), как это:Выполнение нескольких динамических операторов вместе на связанном сервере
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 Profiler, я вижу, что он выполняется просто отлично, как один оператор. Однако, когда я выполняю это через связанный сервер (используя переменную @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
между операторами?
Я не могу ничего на связанном сервере изменить. И да, сброс соединения вызывает проблему. –