sp_bindsession (Transact-SQL)

適用対象:SQL Server

SQL Server データベース エンジンの同じインスタンス内の他のセッションにセッションをバインドまたはバインド解除します。 バインド セッションを使用すると、2 つ以上のセッションが同じトランザクションに参加し、発行されるまでロックをROLLBACK TRANSACTIONCOMMIT TRANSACTION共有できます。

重要

この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに、複数のアクティブな結果セット (MARS) または分散トランザクションを使用してください。 詳細については、「SQL Server Native Client での複数のアクティブな結果セット (MARS) の使用」を参照してください

Transact-SQL 構文表記規則

構文

sp_bindsession { 'bind_token' | NULL }

引数

'bind_token'

Open Data Services srv_getbindtoken 関数を使用sp_getbindtokenして最初に取得したトランザクションを識別するトークン。 bind_tokenは varchar(255) です

リターン コードの値

0 (成功) または 1 (失敗)。

解説

バインドされている 2 つのセッションは、トランザクションとロックのみを共有します。 各セッションは独自の分離レベルを保持し、1 つのセッションで新しい分離レベルを設定しても、もう一方のセッションの分離レベルには影響しません。 各セッションメインセキュリティ アカウントによって識別され、アカウントにアクセス許可が付与されているデータベース リソースにのみアクセスできます。

sp_bindsession では、バインド トークンを使用して、2 つ以上の既存のクライアント セッションをバインドします。 これらのクライアント セッションは、バインディング トークンが取得されたデータベース エンジンの同じインスタンス上に存在する必要があります。 セッションは、コマンドを実行するクライアントです。 バインドされたデータベース セッションは、トランザクションとロック領域を共有します。

データベース エンジンの 1 つのインスタンスから取得したバインド トークンは、DTC トランザクションの場合でも、別のインスタンスに接続されているクライアント セッションには使用できません。 バインド トークンは各インスタンス内でのみローカルに有効であり、複数のインスタンス間で共有することはできません。 データベース エンジンの別のインスタンスでクライアント セッションをバインドするには、次を実行して別のバインド トークンを取得するsp_getbindtoken必要があります。

sp_bindsession は、アクティブでないトークンを使用するとエラーで失敗します。

bind_tokenを指定せずに使用sp_bindsessionするか、bind_tokenNULLすことによって、セッションからバインドを解除します。

アクセス許可

ロール public のメンバーシップが必要です。

次の例では、指定したバインド トークンを現在のセッションにバインドします。

Note

この例に示すバインド トークンは、実行前にsp_getbindtokensp_bindsession実行することによって取得されました。

USE master;
GO
EXEC sp_bindsession 'BP9---5---->KB?-V'<>1E:H-7U-]ANZ';
GO