我正在尝试使用 SQL Server 2008 更改跟踪功能。启用该功能后,您可以使用该CHANGETABLE(...
功能查询 SQL Server 内部保存的更改跟踪历史记录,例如:
SELECT
CT.ID, CT.SYS_CHANGE_OPERATION,
CT.SYS_CHANGE_COLUMNS, CT.SYS_CHANGE_CONTEXT
FROM
CHANGETABLE(CHANGES dbo.CONTACT,20) AS CT
其中 SYS_CHANGE_CONTEXT 列记录CONTEXT_INFO()
会话值。此列对于审核谁更改了什么等很有用。
一些更改数据的语句由远程 SQL Server 使用四部分表示法执行,该远程 SQL Server 将主服务器作为链接服务器,例如:
INSERT INTO [home server].[db name].[dbo].[CONTACT](id) values(@id)
我的问题是在执行查询的会话中在远程服务器上设置的 CONTEXT_INFO() 没有在我的主服务器更改跟踪中被拾取,即它看起来不像 CONTEXT_INFO 跨越分布式查询。这意味着以下内容不会导致 CONTEXT_INFO 记录在主服务器更改跟踪上。
-- I'm running on a remote server
WITH CHANGE_TRACKING_CONTEXT (0x1256698477)
INSERT INTO [home server].[db name].[dbo].[CONTACT](id) values(@id)
有谁知道这是否是一个限制,或者是否有办法在分布式查询中持久/通信 CONTEXT_INFO?
谢谢