The meta data is from an SQL 2012 Server.
I have posted alot more, find the whole list here.
Goto Definition or MetaData
Definition:
sys.sp_MSforce_drop_distribution_jobs(nvarchar @publisher, nvarchar @publisher_db
, nvarchar @type)
MetaData:
CREATE PROCEDURE sys.sp_MSforce_drop_distribution_jobs
(
@publisher sysname,
@publisher_db sysname
,@type nvarchar(5) = N'both' -- 'merge' or 'tran' or 'both' to cleanup.
)
AS
BEGIN
DECLARE @retcode int,
@agent_id int,
@publisher_id smallint,
@publication sysname,
@subscriber sysname,
@subscriber_id smallint,
@subscriber_db sysname,
@subscription_type int
,@drop_tran_jobs bit
,@drop_merge_jobs bit
-- Security Check
IF ISNULL(IS_SRVROLEMEMBER('sysadmin'),0) = 0
BEGIN
RAISERROR(21089, 16, -1)
RETURN 1
END
IF LOWER(@type collate SQL_Latin1_General_CP1_CS_AS) IN (N'tran', N'both')
AND DatabasePropertyEx(@publisher_db, 'IsPublished') = 1
BEGIN
set @drop_tran_jobs = 1
END
else
begin
set @drop_tran_jobs = 0
end
IF LOWER(@type collate SQL_Latin1_General_CP1_CS_AS) IN (N'merge', N'both')
AND DatabasePropertyEx(@publisher_db, 'IsMergePublished') = 1
BEGIN
set @drop_merge_jobs = 1
END
else
BEGIN
set @drop_merge_jobs = 0
END
-- retrieve the publisher_id and if we do not
-- find one then we can just exit silently...
SELECT @publisher_id = server_id
FROM sys.servers
WHERE UPPER(name) = UPPER(@publisher)
IF @publisher_id IS NULL
BEGIN
RETURN 0
END
BEGIN TRANSACTION tr_drop_distribution_jobs
SAVE TRANSACTION tr_drop_distribution_jobs
-- -- -- -- -- -- -- -- -- -- -- -- -
-- DROP QREADER AGENTS
-- -- -- -- -- -- -- -- -- -- -- -- -
-- NOTE:
-- We do not drop qreader agents in the force
-- drop case since we have no way of knowing
-- when we can drop the qreader agent (i.e.
-- when the publisher is using it still...)
-- -- -- -- -- -- -- -- -- -- -- -- -
-- DROP SNAPSHOT AGENTS
-- -- -- -- -- -- -- -- -- -- -- -- -
DECLARE #cursorSnapshot CURSOR LOCAL FAST_FORWARD FOR
SELECT publication
FROM MSsnapshot_agents
WHERE publisher_id = @publisher_id
AND publisher_db = @publisher_db
AND ((@drop_tran_jobs = 1 and publication_type = 1)
or (@drop_merge_jobs = 1 and publication_type = 2)
)
FOR READ ONLY
OPEN #cursorSnapshot
FETCH #cursorSnapshot INTO @publication
WHILE @@FETCH_STATUS != -1
BEGIN
EXEC @retcode = sys.sp_MSdrop_snapshot_agent @publisher = @publisher,
@publisher_db = @publisher_db,
@publication = @publication
IF @@ERROR != 0 OR @retcode != 0
GOTO UNDO
FETCH #cursorSnapshot INTO @publication
END
CLOSE #cursorSnapshot
DEALLOCATE #cursorSnapshot
if (@drop_tran_jobs = 1)
begin
-- -- -- -- -- -- -- -- -- -- -- -- -
-- DROP LOGREADER AGENTS
-- -- -- -- -- -- -- -- -- -- -- -- -
DECLARE #cursorLogreader CURSOR LOCAL FAST_FORWARD FOR
SELECT publication
FROM MSlogreader_agents
WHERE publisher_id = @publisher_id
AND publisher_db = @publisher_db
FOR READ ONLY
OPEN #cursorLogreader
FETCH #cursorLogreader INTO @publication
WHILE @@FETCH_STATUS != -1
BEGIN
EXEC @retcode = sys.sp_MSdrop_logreader_agent @publisher = @publisher,
@publisher_db = @publisher_db,
@publication = @publication
IF @@ERROR != 0 OR @retcode != 0
GOTO UNDO
FETCH #cursorLogreader INTO @publication
END
CLOSE #cursorLogreader
DEALLOCATE #cursorLogreader
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-- DROP DISTRIBUTION AGENTS
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -
DECLARE #cursorDistrib CURSOR LOCAL FAST_FORWARD FOR
SELECT publication,
subscriber_id,
subscriber_db,
subscription_type
FROM MSdistribution_agents
WHERE publisher_id = @publisher_id
AND publisher_db = @publisher_db
FOR READ ONLY
OPEN #cursorDistrib
FETCH #cursorDistrib INTO @publication, @subscriber_id, @subscriber_db, @subscription_type
WHILE @@FETCH_STATUS != -1
BEGIN
EXEC @retcode = sys.sp_MSdrop_distribution_agent @publisher_id = @publisher_id,
@publisher_db = @publisher_db,
@publication = @publication,
@subscriber_id = @subscriber_id,
@subscriber_db = @subscriber_db,
@subscription_type = @subscription_type
IF @@ERROR != 0 OR @retcode != 0
GOTO UNDO
FETCH #cursorDistrib INTO @publication, @subscriber_id, @subscriber_db, @subscription_type
END
CLOSE #cursorDistrib
DEALLOCATE #cursorDistrib
end
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -
-- DROP MERGE AGENTS
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -
DECLARE #cursorReplmerg CURSOR LOCAL FAST_FORWARD FOR
SELECT msma.publication,
msma.subscriber_name,
msma.subscriber_db
FROM MSmerge_agents msma
WHERE publisher_id = @publisher_id
AND publisher_db = @publisher_db
AND @drop_merge_jobs = 1
FOR READ ONLY
OPEN #cursorReplmerg
FETCH #cursorReplmerg INTO @publication, @subscriber, @subscriber_db
WHILE @@FETCH_STATUS != -1
BEGIN
EXEC @retcode = sys.sp_MSdrop_merge_agent @publisher = @publisher,
@publisher_db = @publisher_db,
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriber_db
IF @@ERROR != 0 OR @retcode != 0
GOTO UNDO
FETCH #cursorReplmerg INTO @publication, @subscriber, @subscriber_db
END
CLOSE #cursorReplmerg
DEALLOCATE #cursorReplmerg
COMMIT TRANSACTION tr_drop_distribution_jobs
RETURN 0
UNDO:
ROLLBACK TRANSACTION tr_drop_distribution_jobs
COMMIT TRANSACTION
RETURN 1
END
No comments:
Post a Comment