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-интерфейс расширенных хранимых процедур)