次の方法で共有


srv_getbindtoken (拡張ストアド プロシージャ API)

適用対象: SQL サーバー

重要

この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに CLR 統合を使用してください。

拡張ストアド プロシージャを起動する現在のクライアント セッションに含まれるトランザクションのバインド トークンを取得します。

すると拡張ストアド プロシージャは sp_bindsession を使用して、同じサーバーに対して作成した新しいセッションを既存のトランザクションにバインドします。これにより新しいセッションは、この拡張ストアド プロシージャを起動したクライアント セッションと、同じトランザクション ロック領域を共有できるようになります。

構文

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

引数

srvproc
特定のクライアント接続のためのハンドルである SRV_PROC 構造体を指すポインターです。 この構造体には、アプリケーションとクライアントの間の通信やデータを管理するために、拡張ストアド プロシージャ API ライブラリで使用するすべての情報が格納されます。

bindtoken
バインド トークンのコピー先バッファーを指すポインターです。 バインド トークンは NULL 終端文字列として表されます。 指定するバッファーは、255 バイト以上の長さにする必要があります。

返品

SUCCEED または FAIL。

解説

同じトランザクション ロック領域を共有するために、拡張ストアド プロシージャのセッションを呼び出し元のクライアント セッションにバインドするには

  1. 拡張ストアド プロシージャは srv_getbindtoken を呼び出して、セッション内の現在のトランザクションのバインド トークンを取得します。 トークンは、指定された bindtoken パラメーターで返されます。

  2. 拡張ストアド プロシージャが同じサーバーに対して新しいセッションを開きます。 そのセッション内で、拡張ストアド プロシージャが sp_bindsession を含むバインド トークンを使用し、新しいセッションを同じトランザクションにバインドします。 この拡張ストアド プロシージャは、複数のセッションを作成し、すべてのセッションを同じトランザクションにバインドすることができます。

  3. 外部ストアド プロシージャが返されたり、sp_bindsession が空文字列で呼び出されたりすると、セッションのバインドが解除されます。

    Note

    共有の接続にアクセスできるバインドされたセッションは、一度に 1 つだけです。 あるセッションが現在サーバーでステートメントを実行しているかサーバーからの結果を待っている場合、バインドされた同じ接続を共有している他のセッションは、現在のセッションで現在のステートメントの実行が完了するまでサーバーにアクセスできません。 あるセッションが、サーバーがビジー状態のときに接続にアクセスを試みると、そのセッションは競合状態になりにエラーが返されます。その際、接続が使用中なので後でセッションを再試行する必要があることが示されます。

重要

拡張ストアド プロシージャのソース コードを十分に確認し、コンパイル済み DLL を、運用サーバーにインストールする前にテストする必要があります。 セキュリティの確認およびテストについて詳しくは、Microsoft の Web サイトをご覧ください。

参照

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