May 29, 2012

sp_MSsetcontext_bypasswholeddleventbit (Transact-SQL MetaData) Definition

Please note: that the following source code is provided and copyrighted by Microsoft and is for educational purpose only.
The meta data is from an SQL 2012 Server.

I have posted alot more, find the whole list here.

Goto Definition or MetaData


sys.sp_MSsetcontext_bypasswholeddleventbit(bit @onoff)


 create procedure sys.sp_MSsetcontext_bypasswholeddleventbit @onoff bit --  1 to turn on  
declare @cur_context varbinary(128)
declare @cur_context_first_byte binary(1)
declare @bitmask tinyint
declare @retcode int

-- Security Check
EXEC @retcode = sys.sp_MSreplcheck_subscribe_withddladmin
IF @@ERROR <> 0 or @retcode <> 0
return (1)

-- bit to set: snapshot=1, logreader=2, distrib=4, merge=8,
-- replication_agent=16, merge_identityrange_alterconstraint=32
-- merge_bypasswholeddleventbit=64
if @onoff=1
set @bitmask=64
set @bitmask=255-64

-- get the current context_info. remember we only want to modify a bit without changing the rest of the info
select @cur_context = isnull(context_info(),0x00)

-- get the first byte out. the replication agent flags are set in the first byte.
select @cur_context_first_byte = substring(@cur_context, 1, 1)
-- set the appropriate bit in this one byte (leaving other bits unchanged).
if @onoff=1
select @cur_context_first_byte = (convert(tinyint,@cur_context_first_byte) | @bitmask)
select @cur_context_first_byte = (convert(tinyint,@cur_context_first_byte) & @bitmask)

-- replace the first byte of the 128 byte binary variable, so that now it has the appropriate bit set.
select @cur_context = convert(varbinary(128),stuff (@cur_context, 1, 1, @cur_context_first_byte))
-- set the context_info again with the new binary(128) value.
set context_info @cur_context

if @@error <> 0
return 1

return 0

No comments:

Post a Comment

Total Pageviews