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

Применимо к:SQL Server

Внимание

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

Получает токен привязки транзакции в текущем сеансе клиента, который вызывает расширенную хранимую процедуру.

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

Синтаксис

  
int srv_getbindtoken (  
SRV_PROC*  
srvproc  
,  
char*  
bindtoken  
);  

Аргументы

srvproc
Указатель на структуру SRV_PROC, который представляет собой дескриптор соединения с клиентом. В этой структуре содержатся все сведения, которые библиотека API-интерфейса расширенных хранимых процедур использует для управления обменом данными между приложением и клиентом.

bindtoken
Указатель на буфер, в который будет скопирован токен привязки. Токен привязки представлен как строка, оканчивающаяся нулевым байтом. Указываемый буфер должен иметь длину не менее 255 байт.

Возвраты

SUCCEED или FAIL.

Замечания

Привязка сеанса расширенной хранимой процедуры к сеансу вызывающего ее клиента для совместного использования пространства блокировки транзакций

  1. Расширенная хранимая процедура вызывает srv_getbindtoken , чтобы получить маркер привязки для текущей транзакции в сеансе. Токен возвращается в параметре bindtoken.

  2. Расширенная хранимая процедура открывает новый сеанс на том же сервере. В этом сеансе расширенная хранимая процедура использует токен привязки в хранимой процедуре sp_bindsession для привязки нового сеанса к той же транзакции. Расширенная хранимая процедура может создать несколько сеансов и привязать их к одной транзакции.

  3. Связанный сеанс освобождается при возврате из расширенной хранимой процедуры или когда sp_bindsession вызывается с пустой строкой.

    Примечание.

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

Внимание

Необходимо тщательно просмотреть исходный код расширенных хранимых процедур и проверить скомпилированные библиотеки DLL перед их установкой на рабочий сервер. Сведения о проверке безопасности см. на следующем веб-сайте Майкрософт.

См. также

sp_bindsession (Transact-SQL)
sp_getbindtoken (Transact-SQL)