2005버전에서는 loopback 링크드 서버에 대해서 INSERT... EXECUTE에 대한 지원을 하지 않았다. 하지만 2008버전에는 지원한다. 아래의 예제를 참고하라.
--sql server 2005
create database work;
go
exec sp_addlinkedserver
@Server='LoopBack'
, @SrvProduct='SQLNCLI'
, @Provider=''
, @DataSrc='localhost'
, @Catalog='work';
exec sp_addlinkedsrvlogin 'LoopBack', 'False', 'Sa', 'userid', 'pw';
go
EXEC sp_serveroption 'LoopBack', 'rpc', 'true'
GO
EXEC sp_serveroption 'LoopBack', 'rpc out', 'true'
GO
use work
go
--drop table test
create table test(id int);
insert test values(1);
insert test(id) exec LoopBack.work.dbo.usp_test;
/*
메시지3910, 수준16, 상태2, 줄1
다른세션에서트랜잭션컨텍스트를사용중입니다.
Transaction context in use by another session.
*/
--sql server 2008
create database work;
go
exec sp_addlinkedserver
@Server='LoopBack'
, @SrvProduct=''
, @Provider='SQLNCLI10'
, @DataSrc='localhost\sql2008_ctp6_feb'
, @Catalog='work';
exec sp_addlinkedsrvlogin 'LoopBack', 'False', 'Sa', 'userid', 'pw';
go
EXEC sp_serveroption 'LoopBack', 'rpc', 'true'
GO
EXEC sp_serveroption 'LoopBack', 'rpc out', 'true'
GO
use work
go
--drop table test
create table test(id int);
insert test values(1);
go
create proc usp_test
as
set xact_abort on
select 1
go
insert test(id) exec LoopBack.work.dbo.usp_test;