sp_changesubstatus(Transact-SQL)
기존 구독자의 상태를 변경합니다. 이 저장 프로시저는 게시 데이터베이스의 게시자에서 실행됩니다.
구문
sp_changesubstatus [ [ @publication = ] 'publication' ]
[ , [ @article = ] 'article' ]
[ , [ @subscriber = ] 'subscriber' ]
, [ @status = ] 'status'
[ , [ @previous_status = ] 'previous_status' ]
[ , [ @destination_db = ] 'destination_db' ]
[ , [ @frequency_type = ] frequency_type ]
[ , [ @frequency_interval = ] frequency_interval ]
[ , [ @frequency_relative_interval = ] frequency_relative_interval ]
[ , [ @frequency_recurrence_factor = ] frequency_recurrence_factor ]
[ , [ @frequency_subday = ] frequency_subday ]
[ , [ @frequency_subday_interval = ] frequency_subday_interval ]
[ , [ @active_start_time_of_day = ] active_start_time_of_day ]
[ , [ @active_end_time_of_day = ] active_end_time_of_day ]
[ , [ @active_start_date = ] active_start_date ]
[ , [ @active_end_date = ] active_end_date ]
[ , [ @optional_command_line = ] 'optional_command_line' ]
[ , [ @distribution_jobid = ] distribution_jobid ]
[ , [ @from_auto_sync = ] from_auto_sync ]
[ , [ @ignore_distributor = ] ignore_distributor ]
[ , [ @offloadagent= ] remote_agent_activation ]
[ , [ @offloadserver= ] 'remote_agent_server_name' ]
[ , [ @dts_package_name= ] 'dts_package_name' ]
[ , [ @dts_package_password= ] 'dts_package_password' ]
[ , [ @dts_package_location= ] dts_package_location ]
[ , [ @skipobjectactivation = ] skipobjectactivation
[ , [ @distribution_job_name= ] 'distribution_job_name' ]
[ , [ @publisher = ] 'publisher' ]
인수
[ @publication = ] 'publication'
게시의 이름입니다. publication은 sysname이며 기본값은 **%**입니다. publication이 지정되지 않은 경우 모든 게시에 적용됩니다.[ @article=] 'article'
아티클의 이름입니다. 이 이름은 게시에 대해 고유해야 합니다. article은 sysname이며 기본값은 **%**입니다. article이 지정되지 않은 경우 모든 아티클에 적용됩니다.[ @subscriber=] 'subscriber'
상태를 변경할 구독자의 이름입니다. subscriber는 sysname이며 기본값은 **%**입니다. subscriber가 지정되지 않은 경우 지정된 아티클에 대한 모든 구독자의 상태가 변경됩니다.[ @status=] 'status'
syssubscriptions 테이블의 구독 상태입니다. status는 sysname이고 기본값은 없으며 다음 값 중 하나일 수 있습니다.값
설명
active
구독자가 동기화되어 데이터를 받습니다.
inactive
구독이 없는 구독자 항목이 있습니다.
subscribed
구독자가 데이터를 요청하고 있으나 아직 동기화되지 않았습니다.
[ @previous_status=] 'previous_status'
구독의 이전 상태입니다. previous_status는 sysname이며 기본값은 NULL입니다. 이 매개 변수를 사용하면 현재 해당 상태인 모든 구독을 변경할 수 있으므로 특정 구독 집합에 대해 그룹 함수를 사용할 수 있습니다(예를 들어 모든 활성 구독을 다시 subscribed로 설정).[ @destination_db=] 'destination_db'
대상 데이터베이스의 이름입니다. destination_db는 sysname이며 기본값은 **%**입니다.[ @frequency_type = ] frequency_type
배포 태스크를 예약하는 빈도입니다. frequency_type은 int이며 기본값은 NULL입니다.[ @frequency_interval = ] frequency_interval
frequency_type에서 설정된 빈도에 적용되는 값입니다. frequency_interval은 int이며 기본값은 NULL입니다.[ @frequency_relative_interval = ]frequency_relative_interval
배포 태스크의 날짜입니다. 이 매개 변수는 frequency_type을 32(매월 상대)로 설정한 경우 사용됩니다. frequency_relative_interval은 int이며 다음 값 중 하나일 수 있습니다.값
설명
1
첫째
2
둘째
4
셋째
8
넷째
16
마지막
NULL(기본값)
[ @frequency_recurrence_factor = ] frequency_recurrence_factor
frequency_type에 사용되는 되풀이 비율입니다. frequency_recurrence_factor는 int이며 기본값은 NULL입니다.[ @frequency_subday = ]frequency_subday
정의된 기간 동안 다시 계획하는 빈도를 분으로 표시한 것입니다. frequency_subday는 int이며 다음 값 중 하나일 수 있습니다.값
설명
1
한 번
2
초
4
분
8
시간
NULL(기본값)
[ @frequency_subday_interval = ]frequency_subday_interval
frequency_subday에 대한 간격입니다. frequency_subday_interval은 int이며 기본값은 NULL입니다.[ @active_start_time_of_day = ] active_start_time_of_day
하루 중에서 배포 태스크가 처음으로 실행되도록 예약된 시간이며 HHMMSS 형식으로 표시됩니다. active_start_time_of_day는 int이며 기본값은 NULL입니다.[ @active_end_time_of_day = ] active_end_time_of_day
하루 중에서 배포 태스크가 마지막으로 실행되도록 예약된 시간이며 HHMMSS 형식으로 표시됩니다. active_end_time_of_day는 int이며 기본값은 NULL입니다.[ @active_start_date = ] active_start_date
배포 태스크가 처음으로 실행되도록 예약된 날짜이며 YYYYMMDD 형식으로 표시됩니다. active_start_date는 int이며 기본값은 NULL입니다.[ @active_end_date = ] active_end_date
배포 태스크가 마지막으로 실행되도록 예약된 날짜이며 YYYYMMDD 형식으로 표시됩니다. active_end_date는 int이며 기본값은 NULL입니다.[ @optional_command_line=] 'optional_command_line'
선택적인 명령 프롬프트입니다. optional_command_line은 **nvarchar(4000)**이며 기본값은 NULL입니다.[ @distribution_jobid=] distribution_jobid
구독 상태를 비활성에서 활성으로 변경할 때 구독에 대한 배포자에 있는 배포 에이전트의 작업 ID입니다. 기타 경우에는 정의되지 않습니다. 이 저장 프로시저에 대한 단일 호출에 둘 이상의 배포 에이전트가 연관된 경우 결과는 정의되지 않습니다. distribution_jobid는 **binary(16)**이며 기본값은 NULL입니다.[ @from_auto_sync=] from_auto_sync
정보를 제공하기 위해서만 확인됩니다. 지원되지 않습니다. 향후 호환성은 보장되지 않습니다.[ @ignore_distributor=] ignore_distributor
정보를 제공하기 위해서만 확인됩니다. 지원되지 않습니다. 향후 호환성은 보장되지 않습니다.[ @offloadagent= ] remote_agent_activation
[!참고]
원격 에이전트 활성화는 더 이상 사용되지 않으며 지원되지 않습니다. 이 매개 변수는 이전 버전 스크립트와의 호환성을 유지하기 위한 목적으로만 지원됩니다. remote_agent_activation을 0 이외의 값으로 설정하면 오류가 발생합니다.
[ @offloadserver= ] 'remote_agent_server_name'
[!참고]
원격 에이전트 활성화는 더 이상 사용되지 않으며 지원되지 않습니다. 이 매개 변수는 이전 버전 스크립트와의 호환성을 유지하기 위한 목적으로만 지원됩니다. remote_agent_server_name을 NULL이 아닌 값으로 설정하면 오류가 발생합니다.
[ @dts_package_name= ] 'dts_package_name'
DTS(데이터 변환 서비스) 패키지의 이름을 지정합니다. dts_package_name은 sysname이며 기본값은 NULL입니다. 예를 들어 이름이 DTSPub_Package인 패키지의 경우 @dts_package_name = N'DTSPub_Package'를 지정합니다.[ @dts_package_password= ] 'dts_package_password'
패키지의 암호를 지정합니다. dts_package_password는 sysname이며 기본값은 암호 속성이 변경되지 않은 상태로 유지됨을 나타내는 NULL입니다.[!참고]
DTS 패키지에는 암호가 있어야 합니다.
[ @dts_package_location= ] dts_package_location
패키지 위치를 지정합니다. dts_package_location은 int이며 기본값은 0입니다. 0인 경우 패키지 위치는 배포자입니다. 1인 경우 패키지 위치는 구독자입니다. 패키지 위치는 distributor 또는 subscriber일 수 있습니다.[ @skipobjectactivation= ] skipobjectactivation
정보를 제공하기 위해서만 확인됩니다. 지원되지 않습니다. 향후 호환성은 보장되지 않습니다.[ @distribution_job_name= ] 'distribution_job_name'
배포 작업의 이름입니다. distribution_job_name은 sysname이며 기본값은 NULL입니다.[ @publisher = ] 'publisher'
Microsoft SQL Server 이외 게시자를 지정합니다. publisher는 sysname이며 기본값은 NULL입니다.[!참고]
SQL Server 게시자에 대한 아티클 속성을 변경할 때는 publisher를 사용하면 안 됩니다.
반환 코드 값
0(성공) 또는 1(실패)
주의
sp_changesubstatus는 스냅숏 복제 및 트랜잭션 복제에 사용됩니다.
sp_changesubstatus는 변경된 상태로 syssubscriptions 테이블에서 구독자의 상태를 변경합니다. 필요한 경우 sysarticles 테이블의 아티클 상태를 업데이트하여 활성 또는 비활성으로 표시합니다. 필요한 경우 복제된 테이블에 대한 sysobjects 테이블에서 복제 플래그를 설정 또는 해제합니다.
사용 권한
sysadmin 고정 서버 역할이나 db_owner 고정 데이터베이스 역할의 멤버 또는 구독의 작성자만 sp_changesubstatus를 실행할 수 있습니다.