sp_bindsession (Transact-SQL)

Применимо к: даSQL Server (все поддерживаемые версии)

Привязывает или отменяет привязку сеанса к другим сеансам в том же экземпляре 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 Open Data Services. 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)
API srv_getbindtoken (расширенных хранимых процедур)
Системные хранимые процедуры (Transact-SQL)