Я хотел бы обновить строки на связанном сервере.Я создал связанный сервер на своем локальном SQL-сервере с помощью инструкции .
Я могу обновить строки в Query Analyzer с помощью приведенного ниже кода.Ошибка не возвращается, и строки успешно обновляются на связанном сервере.
UPDATE [LinkedServer].[Database].[dbo].[Table]
SET A = 'A', B = 'B'
WHERE id = 1
Но когда я создал триггер обновления для своей таблицы на локальном сервере sql, как показано ниже,
ALTER TRIGGER [TriggerLocalServerTable]
ON dbo.[LocalServerTable]
FOR UPDATE
AS
DECLARE @A varchar(4)
DECLARE @B varchar(4)
DECLARE @id int
BEGIN
SELECT
@A = A,
@B = B,
@id = id
FROM inserted
UPDATE [LinkedServer].[Database].[dbo].[Table]
SET A = @A, B = @B
WHERE id = @id
END
При выполнении триггера возвращает эту ошибку, как показано ниже,
Поставщик OLE DB «SQLNCLI» для связанного сервера «LinkedServer» вернул сообщение «Менеджер транзакций партнера отключил поддержку удаленных / сетевых транзакций».Сообщение 7391, уровень 16, состояние 2, процедура TriggerLocalServerTable, строка 45 Не удалось выполнить операцию, поскольку поставщику OLE DB "SQLNCLI" для связанного сервера "LinkedServer" не удалось начать распределенную транзакцию.
Я применил эту инструкцию к локальному серверу для решения проблемы, все изменилось.
Подробнее;
- , если определен мой связанный сервер с его удаленным IP-адресом.
- Мой локальный сервер и связанный сервер не находятся в одном домене.
- Параметр безопасности для связанного сервера «Сделано с использованием этого контекста безопасности»
- Версия локального сервера - Windows Server 2003 SP2, Версия SQL-Server соответствует стандарту 2005 года.
- Версия ОС связанного сервера - 2008 и версия SQL-Server 2008 (64-разрядная).
- Не удалось получить доступ к удаленному серверу
с помощью RDP,Я могу получить доступ только из порта SQL (1433). - Я установил для связанного сервера «RPC» и «RPC Out» значение «True» из «Опции безопасности».
Есть ли у вас какие-либо идеи для решения этой проблемы.Большое спасибо уже сейчас.
Редактировать: Я решил эту проблему.Сначала я создал триггер для обновления [TriggerLocalServerTable].Работа этого триггера заключается в вставке новых полей обновления в локальную таблицу.Эта новая таблица используется для обновления временных данных.Затем я создал задание, которое запускается каждый час для обновления файлов на LinkedServer.Это задание получает данные из временной таблицы, а затем обновляет поля таблицы LinkedServer.
С уважением, Kerberos.