http://support.microsoft.com/kb/886839
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| CREATE FUNCTION dbo.fn_convertnumericlsntobinary(
@numericlsn numeric(25,0)
) returns binary(10)
AS
BEGIN
-- 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 int
select @high4bytelsncomponent = convert(bigint, floor(@numericlsn / 1000000000000000))
select @numericlsn = @numericlsn - convert(numeric(25,0), @high4bytelsncomponent) * 1000000000000000
select @mid4bytelsncomponent = convert(bigint,floor(@numericlsn / 100000))
select @numericlsn = @numericlsn - convert(numeric(25,0), @mid4bytelsncomponent) * 100000
select @low2bytelsncomponent = convert(int, @numericlsn)
return convert(binary(4), @high4bytelsncomponent) +
convert(binary(4), @mid4bytelsncomponent) +
convert(binary(2), @low2bytelsncomponent)
END
|
Daniel Adeniji · 2015-12-10
Simon:
Can you please let me know if using this function will help any closer to converting fn_fbLog Log to datetime.
Thanks,
Daniel Adeniji
Simon Cho · 2015-12-28
Hi Daniel,
LSN itself doesn’t mean about time. This is only for transaction sequence number.
https://technet.microsoft.com/en-us/library/ms190411(v=sql.105).aspx
When you run fn_dblog(null,null), you can find out the “Begin time” and “End time” in the LOP_BEGIN_XACT” and “LOP_COMMIT_XACT” operation.
So that, you can join with transaction ID and find out corresponding transaction begin time and end time.
This convert function is for lookup backupset table since it’s not numeric (25,0) format.
Thanks,
Simon
Daniel Adeniji · 2015-12-28
Thanks, Daniel