说明
SQL SERVER 利用自身能力实时同步,可以使用CDC、CT以及日志,以下是利用事务日志进行实时同步的可行性;其重点是在解析日志内容。
前置准备
1、创建表
2、写几条数据进去,一会我们将对红框中的数据日志进行解析
3、查询事务日志
SELECT [当前LSN] =[Current LSN]
,[事务名称] =[Transaction Name]
,[操作类型] =[Operation]
,[开始时间] =[Begin Time]
,[操作用户ID]=[TRANSACTION SID]
,[操作用户] =SUSER_SNAME([TRANSACTION SID])
,[操作对象ID]=[PartitionID]
,[操作对象] =[name]
,[数据页ID] =[Page ID]
,[数据行ID] =[Slot ID]
,[数据内容0] =[RowLog Contents 0]
,[数据内容1] =[RowLog Contents 1]
,t1.*
FROM [flinkcdc].[sys].[fn_dblog](NULL,NULL) t1
LEFT JOIN (
SELECT m2.[partition_id]
,m1.[name]
FROM [flinkcdc].[sys].[objects] m1
JOIN [flinkcdc].[sys].[partitions] m2 ON m2.[object_id]=m1.[object_id]
) t2 ON t2.[partition_id]=t1.[PartitionID]
WHERE 1=1
AND [PartitionID] IS NOT NULL
AND [name] = 'source3'
下面的实验就是对红框中日志内容的解析
事务日志解析代码
代码如下:
; WITH [CTE