sp_replcmds(Transact-SQL)

복제용으로 표시된 트랜잭션에 대한 명령을 반환합니다. 이 저장 프로시저는 게시 데이터베이스의 게시자에서 실행됩니다.

중요 정보중요

sp_replcmds 프로시저는 복제 관련 문제를 해결하기 위한 목적으로만 실행해야 합니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

sp_replcmds [ @maxtrans = ] maxtrans

인수

  • [ @maxtrans=] maxtrans
    정보를 반환할 트랜잭션의 수입니다. maxtransint이며 기본값은 배포 대기 중인 다음 트랜잭션을 지정하는 1입니다.

결과 집합

열 이름

데이터 형식

설명

article id

int

아티클의 ID입니다.

partial_command

bit

부분 명령인지 여부를 나타냅니다.

command

varbinary(1024)

명령 값입니다.

xactid

binary(10)

트랜잭션 ID입니다.

xact_seqno

varbinary(16)

트랜잭션 시퀀스 번호입니다.

publication_id

int

게시의 ID입니다.

command_id

int

MSrepl_commands에 있는 명령의 ID입니다.

command_type

int

명령의 유형입니다.

originator_srvname

sysname

트랜잭션이 시작된 서버입니다.

originator_db

sysname

트랜잭션이 시작된 데이터베이스입니다.

pkHash

int

내부적으로만 사용할 수 있습니다.

originator_publication_id

int

트랜잭션이 시작된 게시의 ID입니다.

originator_db_version

int

트랜잭션이 시작된 데이터베이스의 버전입니다.

originator_lsn

varbinary(16)

원본 게시에서 명령의 LSN(로그 시퀀스 번호)을 식별합니다.

주의

sp_replcmds는 트랜잭션 복제의 로그 판독기 프로세스에 사용됩니다.

복제는 지정된 데이터베이스 내에서 sp_replcmds를 실행하는 첫 번째 클라이언트를 로그 판독기로 간주합니다.

이 프로시저는 소유자 한정 테이블에 대한 명령을 생성하거나 테이블 이름을 한정하지 않습니다(기본값). 한정된 테이블 이름을 추가할 경우 한 데이터베이스 내의 특정 사용자가 소유한 테이블에서 다른 데이터베이스 내의 같은 사용자가 소유한 테이블로 데이터를 복제할 수 있습니다.

[!참고]

원본 데이터베이스의 테이블 이름은 소유자 이름에 의해 한정되므로 대상 데이터베이스의 테이블 소유자는 반드시 같은 소유자 이름을 사용해야 합니다.

같은 데이터베이스 내에서 sp_replcmds를 실행하려고 시도한 클라이언트는 첫 번째 클라이언트가 연결을 끊기 전에는 18752 오류를 받게 됩니다. 첫 번째 클라이언트가 연결을 끊은 후에는 다른 클라이언트가 sp_replcmds를 실행할 수 있으며 새로운 로그 판독기가 됩니다.

텍스트 포인터가 같은 트랜잭션에서 검색되지 않아 sp_replcmds가 텍스트 명령을 복제할 수 없는 경우 경고 메시지 18759번이 Microsoft SQL Server 오류 로그와 MicrosoftWindows 응용 프로그램 로그에 모두 추가됩니다.

사용 권한

sysadmin 고정 서버 역할 또는 db_owner 고정 데이터베이스 역할의 멤버만 sp_replcmds를 실행할 수 있습니다.