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_MSensure_single_instance(nvarchar @application_name, int @agent_type)
MetaData:
CREATE PROCEDURE sys.sp_MSensure_single_instance ( @application_name sysname, @agent_type int = NULL ) AS BEGIN SET NOCOUNT ON DECLARE @retcode int, @type sysname, @dbprincipal sysname if @agent_type = 4 and exists (select 1 from sys.database_principals where name=N'MSmerge_PAL_role' and type = 'R') begin -- for merge any pal user (PAL of any publication) can do the instance check exec @retcode = sys.sp_MSrepl_PAL_rolecheck if (@retcode <> 0) or (@@error <> 0) return 1 -- use the merge pal role for merge select @dbprincipal = N'MSmerge_PAL_role' end else begin IF IS_MEMBER('db_owner') != 1 BEGIN -- "Only members of the sysadmin or db_owner roles can perform this operation." RAISERROR(21050, 14, -1) RETURN 1 END -- use db_owner principal select @dbprincipal = N'db_owner' end IF @agent_type = 1 BEGIN SELECT @type = 'snapshot' END ELSE IF @agent_type = 2 BEGIN SELECT @type = 'logreader' END ELSE IF @agent_type = 9 BEGIN SELECT @type = 'queuereader' END ELSE IF @agent_type = 10 BEGIN SELECT @type = 'distribution' END ELSE IF @agent_type = 4 BEGIN SELECT @type = 'merge' END ELSE BEGIN -- "Invalid value given for parameter @type." RAISERROR(15021, 16, -1, '@type') RETURN 1 END -- get an applock at the db_owner level to ensure we -- only allow one agent to run at a time. only dbo -- for the distribution db will be able to aquire this EXEC @retcode = sys.sp_getapplock @Resource = @application_name, @LockMode = 'Exclusive', @LockOwner = 'Session', @LockTimeout = 0, @DbPrincipal = @dbprincipal IF @@ERROR <> 0 OR @retcode NOT IN (0, 1) BEGIN -- "Another '@type' agent for the subscription(s) is running or the server is working on a previous request by the same agent." RAISERROR(21036, 16, -1, @type) RETURN 1 END -- Select the name of the server this executes on if the physical server name is not the same as the virtual server name if lower(@@servername) <> lower(publishingservername()) select @@servername else select NULL RETURN 0 END
No comments:
Post a Comment