sp_bindsession (Transact-SQL)

Привязывает или развязывает сеанс к другим сеансам в одном экземпляре компонента SQL Server Компонент Database Engine. Привязывание сеансов позволяет двум и более сеансам участвовать в одной транзакции и общих блокировках, пока выполняется ROLLBACK TRANSACTION или COMMIT TRANSACTION.

Важное примечаниеВажно!

В будущей версии Microsoft SQL Server этот компонент будет удален. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Используйте режим MARS или распределенные транзакции. Дополнительные сведения см. в разделе Использование режима MARS.

Значок ссылки на раздел Синтаксические обозначения Transact-SQL

Синтаксис

sp_bindsession { 'bind_token' | NULL }

Аргументы

  • ' bind_token '
    Токен, идентифицирующий транзакцию, первоначально полученную с помощью sp_getbindtoken или функции srv_getbindtoken открытых служб данных. bind_tokenявляется varchar(255).

Значения кодов возврата

0 (успешное завершение) или 1 (неуспешное завершение)

Замечания

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

Процедура sp_bindsession использует токен связывания для связывания двух и более существующих сеансов клиента. Эти сеансы клиента должны быть на одном экземпляре компонента Компонент Database Engine, от которого был получен токен связывания. Сеанс — это клиент, выполняющий команду. Привязанные сеансы баз данных совместно используют пространство транзакций и блокировок.

Токен связывания, полученный от одного экземпляра компонента Компонент Database Engine, не может использоваться для сеанса клиента, подключенного к другому экземпляру, даже для транзакций DTC. Токен связывания допустим только локально внутри каждого экземпляра и не может совместно использоваться множеством экземпляров. Для привязки сеансов клиента на другом экземпляре компонента Компонент Database Engine необходимо получить другой токен связывания, выполнив процедуру sp_getbindtoken.

Процедура sp_bindsession выполнится с ошибкой, если она будет использовать токен, который не является активным.

Выполните развязку с сеансом или с помощью процедуры sp_bindsession, не указывая bind_token или с помощью передачи значения NULL в bind_token.

Разрешения

Требуется членство в роли public.

Примеры

В следующем примере указанный токен привязки привязывается к текущему сеансу.

ПримечаниеПримечание

Токен привязки, показанный в этом примере, был получен путем выполнения процедуры sp_getbindtoken до выполнения процедуры sp_bindsession.

USE master;
GO
EXEC sp_bindsession 'BP9---5---->KB?-V'<>1E:H-7U-]ANZ';
GO

См. также

Справочник

sp_getbindtoken (Transact-SQL)

srv_getbindtoken (API-интерфейс расширенных хранимых процедур)

Системные хранимые процедуры (Transact-SQL)