Я изучаю распределенные запросы и использую SQL Server 2008 для практики.

Я успешно получил данные со связанного сервера с помощью оператора OPENROWSET.

Теперь я хочу обернуть некоторые операторы модификации данных в транзакцию и выполнить на связанном сервере. Как мне это сделать? Эта транзакция такая же, как и транзакция на локальном сервере?

Кроме того, как мне реализовать настройки безопасности, чтобы кто-то не мог получить пароль для входа на связанный сервер? Пароль является параметром процедуры sp_addlinkedsrvlogin.

0
Linh 19 Ноя 2011 в 13:26

1 ответ

Запрос должен будет участвовать в распределенной транзакции (требуется установка и настройка MSDTC на обоих концах и открытие соответствующих портов в брандмауэре...). По возможности старайтесь не держать открытой транзакцию в распределенных запросах.

Может иметь значение: ИСПРАВЛЕНИЕ. Сообщение об ошибке при выполнении распределенного запроса в SQL Server 2005 или SQL Server 2008: "OLE Поставщик БД 'SQLNCLI' для связанного сервера '' вернул сообщение 'Нет активных транзакций'"

Проблема с распределенными транзакциями для связанного сервера в SQL Server 2008

Обновление (в ответ на вопрос, заданный в комментариях):

Из вики:

Системы баз данных реализуют распределенные транзакции как транзакции для нескольких приложений или хостов. Распределенная транзакция применяет свойства ACID к нескольким системам или хранилищам данных и может включать такие системы, как базы данных, файловые системы, системы обмена сообщениями и другие приложения. В распределенной транзакции служба координации обеспечивает применение всех частей транзакции ко всем соответствующим системам. Как и в случае с базой данных и другими транзакциями, в случае сбоя какой-либо части транзакции выполняется откат всей транзакции во всех затронутых системах.

1
Mitch Wheat 22 Ноя 2011 в 04:14
Не могли бы вы сообщить мне, в чем разница между локальной транзакцией и распределенной транзакцией?
 – 
Linh
21 Ноя 2011 в 08:01