在复制中经常会使用到16进制的LSN,但在日志fn_dblog中的LSN是数字形式,于是从网上找到以下转换函数
CREATE FUNCTION dbo.fn_convertnumericlsntobinary(@numericlsn numeric(25,0)) returns binary(10)ASBEGIN-- Declare components to be one step larger than the intended type-- to avoid sign overflow problems. For example, convert(smallint, convert(numeric(25,0),65535)) will fail but convert(binary(2), -- convert(int,convert(numeric(25,0),65535))) will give the -- intended result of 0xffff.declare @high4bytelsncomponent bigint,@mid4bytelsncomponent bigint,@low2bytelsncomponent intselect @high4bytelsncomponent = convert(bigint, floor(@numericlsn / 1000000000000000))select @numericlsn = @numericlsn - convert(numeric(25,0), @high4bytelsncomponent) * 1000000000000000select @mid4bytelsncomponent = convert(bigint,floor(@numericlsn / 100000))select @numericlsn = @numericlsn - convert(numeric(25,0), @mid4bytelsncomponent) * 100000select @low2bytelsncomponent = convert(int, @numericlsn)return convert(binary(4), @high4bytelsncomponent) +convert(binary(4), @mid4bytelsncomponent) +convert(binary(2), @low2bytelsncomponent)END