2010-04-15 5 views
1

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

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

ответ

1

От @@IDENTITY:

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

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

Смежные вопросы