Распределенные транзакции в SQL Server 2005 - PullRequest
1 голос
/ 15 апреля 2010

В рамках транзакции я изменяю строки в таблицах через ссылку на сервер, поэтому в моем sproc необходимо указать «SET XACT_ABORT ON», иначе он не будет выполнен. Теперь я замечаю, что SCOPE_IDENTITY () возвращает NULL, что, вероятно, связано с областью распределенных транзакций?

Кто-нибудь знает, почему и как решить?

1 Ответ

1 голос
/ 15 апреля 2010

С @@ IDENTITY :

Область действия функции @@ IDENTITY текущая сессия на локальном сервере на котором он выполнен. Эта функция не может быть применен к удаленному или связанному сервера. Чтобы получить значение личности на другом сервере выполните хранимая процедура на этом пульте или связанный сервер и хранить это процедура (которая выполняется в контекст удаленного или связанного сервер) собрать значение личности и вернуть его вызывающему соединению на локальный сервер.

И обратите внимание, что хотя в окружающих абзацах говорится об IDENT_CURRENT и SCOPE_IDENTITY, они не появляются в этом абзаце; то есть ни один из них не будет работать для получения значений идентификаторов с удаленных серверов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...