복제라는 SQL Server의 기능을 활용하여 여러 개의 테이블을 다른 구독서버로 데이터를 동기화 하는 용도로 사용됩니다.
테이블일 경우에는 게시자의 트랜잭션 로그 파일을 읽어 배포자로 보낸 후 배포자는 다시 구독자에게 넘겨주는 방법으로 동작 하게 됩니다.
데이터 뿐만이 아니라 게시자에서 실행되는 SP의 실행도 구독에도 동일히 반영할 수 있습니다.
아래의 그림을 보면 "저장 프로시져 실행"," 직렬화된 트랜잭션에서의 실행" 두 가지를 선택하여 구독자에게 전달 할 수 있습니다.
SP의 직렬화된 트랜잭션에서의 실행은 SERIALIZABLE 격리수준에서 명시적 트랜잭션을 사용한 SP에 대해서만 구독으로 전달 하겠다라는 의미입니다.
자세한 내용은 아래 테스트를 참고 하세요.
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
BEGIN TRAN
exec P..up_b 3,'SONGHYOK'
COMMIT
--테스트 시작
create table P..b (a int, b char(100))
create table S..b (a int, b char(100))
Create Proc p..up_B
@a int
,@b char(100)
as
insert into b valueS(@a,@b)
exec p..up_b 1,'Song'
<SQL Server 2005 SP 아티클>
<SQL Server 2000 SP 아티클>
<게시서버에서 호출 시 구독서버에도 동일한 내용이 반영되는 것 확인한 추적 로그>