· 6 years ago · Jun 27, 2019, 07:44 PM
1DROP TABLE IF EXISTS dbo.DropColumnTest;
2GO
3CREATE TABLE dbo.DropColumnTest
4(
5 rid int NOT NULL
6 CONSTRAINT DropColumnTest_pkc
7 PRIMARY KEY CLUSTERED
8 , someCol varchar(8000) NOT NULL
9);
10
11INSERT INTO dbo.DropColumnTest (rid, someCol)
12SELECT 1, REPLICATE('Z', 8000);
13GO
14
15DECLARE @startLSN nvarchar(25);
16
17SELECT TOP(1) @startLSN = dl.[Current LSN]
18FROM sys.fn_dblog(NULL, NULL) dl
19ORDER BY dl.[Current LSN] DESC;
20
21DECLARE @a int = CONVERT(varbinary(8), '0x' + CONVERT(varchar(10), LEFT(@startLSN, 8), 0), 1)
22 , @b int = CONVERT(varbinary(8), '0x' + CONVERT(varchar(10), SUBSTRING(@startLSN, 10, 8), 0), 1)
23 , @c int = CONVERT(varbinary(8), '0x' + CONVERT(varchar(10), RIGHT(@startLSN, 4), 0), 1);
24
25SELECT @startLSN = CONVERT(varchar(8), @a, 1)
26 + ':' + CONVERT(varchar(8), @b, 1)
27 + ':' + CONVERT(varchar(8), @c, 1)
28
29ALTER TABLE dbo.DropColumnTest DROP COLUMN someCol;
30
31SELECT *
32FROM sys.fn_dblog(@startLSN, NULL)
33
34
35--modify an existing data row
36SELECT TOP(1) @startLSN = dl.[Current LSN]
37FROM sys.fn_dblog(NULL, NULL) dl
38ORDER BY dl.[Current LSN] DESC;
39
40SET @a = CONVERT(varbinary(8), '0x' + CONVERT(varchar(10), LEFT(@startLSN, 8), 0), 1);
41SET @b = CONVERT(varbinary(8), '0x' + CONVERT(varchar(10), SUBSTRING(@startLSN, 10, 8), 0), 1);
42SET @c = CONVERT(varbinary(8), '0x' + CONVERT(varchar(10), RIGHT(@startLSN, 4), 0), 1);
43
44SELECT @startLSN = CONVERT(varchar(8), @a, 1)
45 + ':' + CONVERT(varchar(8), @b, 1)
46 + ':' + CONVERT(varchar(8), @c, 1)
47
48UPDATE dbo.DropColumnTest SET rid = 2;
49
50SELECT *
51FROM sys.fn_dblog(@startLSN, NULL)