sp_bindsession (Transact-SQL)
Область применения: SQL Server
Привязывает или отменяет привязку сеанса к другим сеансам в том же экземпляре SQL Server ядро СУБД. Сеансы привязки позволяют двум или нескольким сеансам участвовать в одной транзакции и делиться блокировками до тех пор, пока не будет выдано ROLLBACK TRANSACTION
или COMMIT TRANSACTION
не будет выдано.
Внимание
Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо этого используйте несколько активных наборов результатов (MARS) или распределенных транзакций. Дополнительные сведения см. в статье Об использовании нескольких активных результирующих наборов (MARS) в собственном клиенте SQL Server.
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_bindsession { 'bind_token' | NULL }
Аргументы
"bind_token"
Маркер, идентифицирующий транзакцию, изначально полученную с помощью sp_getbindtoken
или функцией Open Data Services srv_getbindtoken
. bind_token — varchar(255).
Значения кода возврата
0
(успешно) или 1
(сбой).
Замечания
Два объединенных сеанса совместно используют только транзакции и блокировки. Каждый сеанс сохраняет свой собственный уровень изоляции, и настройка нового уровня изоляции на одном сеансе не влияет на уровень изоляции другого сеанса. Каждый сеанс по-прежнему определяется своей учетной записью безопасности и может получить доступ только к ресурсам базы данных, к которым предоставляется разрешение учетной записи.
sp_bindsession
использует маркер привязки для привязки двух или более существующих клиентских сеансов. Эти клиентские сеансы должны находиться в том же экземпляре ядро СУБД, из которого получен маркер привязки. Сеанс — это клиент, выполняющий команду. Привязанные сеансы баз данных совместно используют пространство транзакций и блокировок.
Маркер привязки, полученный из одного экземпляра ядро СУБД, нельзя использовать для сеанса клиента, подключенного к другому экземпляру, даже для транзакций DTC. Маркер привязки действителен только локально внутри каждого экземпляра и не может использоваться для нескольких экземпляров. Чтобы привязать клиентские сеансы к другому экземпляру ядро СУБД, необходимо получить другой маркер привязки путем 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