Я пытаюсь использовать функцию отслеживания изменений SQL Server 2008. Как только эта функция включена, вы можете использовать функцию CHANGETABLE(...
для запроса истории отслеживания изменений, которая хранится внутри SQL Server, например ::10000
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, который имеет домашний сервер в качестве связанного сервера, например ::100100
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 по распределенному запросу?
Спасибо