sys.sp_xtp_bind_db_resource_pool (Transact-SQL)

適用対象: はいSQL Server (サポートされているすべてのバージョン)

指定されたリソース プールに指定されたインメモリ OLTP データベースをバインドします。 実行する前に、データベースとリソースプールの両方が存在している必要があり sys.sp_xtp_bind_db_resource_pool ます。

このシステムプロシージャは、resource_pool_name によって識別される Resource Governor プールと database_name によって識別されるデータベースとの間のバインドを作成します。 バインド時にデータベースにメモリ最適化オブジェクトが含まれている必要はありません。 メモリ最適化オブジェクトが存在しない場合、リソース プールからメモリは取得されません。 このバインドは、以下で説明するように、アロケーターによって割り当てられたメモリを管理するために Resource Governor によって使用され インメモリ OLTP ます。

指定されたデータベースのバインドが既に存在する場合、プロシージャはエラーを返します。 どのような場合でも、データベースがアクティブなバインドを複数持つことはできません。

トピック リンク アイコン Transact-SQL 構文表記規則

構文

sys.sp_xtp_bind_db_resource_pool 'database_name', 'resource_pool_name'  

引数

database_name
既存の インメモリ OLTP 有効なデータベースの名前。

resource_pool_name
既存のリソースプールの名前。

メッセージ

エラーが発生すると、 sp_xtp_bind_db_resource_pool これらのメッセージのいずれかが返されます。

データベースが存在しない
Database_name は既存のデータベースを参照する必要があります。 指定した ID を持つデータベースが存在しない場合は、次のメッセージが返されます。
データベース ID% d は存在しません。 このバインドに有効なデータベース ID を使用してください。

Msg 911, Level 16, State 18, Procedure sp_xtp_bind_db_resource_pool_internal, Line 51  
Database 'Hekaton_DB213' does not exist. Make sure that the name is entered correctly.  

データベースがシステム データベースである
インメモリ OLTP テーブルをシステム データベースに作成することはできません。 そのため、そのようなデータベースにインメモリ OLTP メモリのバインドを作成するのは無効です。 次のエラーが返されます。
Database_name% s はシステムデータベースを参照しています。 リソースプールは、ユーザーデータベースにのみバインドできます。

Msg 41371, Level 16, State 1, Procedure sp_xtp_bind_db_resource_pool_internal, Line 51  
Binding to a resource pool is not supported for system database 'master'. This operation can only be performed on a user database.  

リソースプールが存在しません
Resource_pool_name によって識別されるリソースプールは、実行前に存在している必要があり sp_xtp_bind_db_resource_pool ます。 指定した ID のプールが存在しない場合、次のエラーが返されます。
リソースプール% s は存在しません。 有効なリソースプール名を入力してください。

Msg 41370, Level 16, State 1, Procedure sp_xtp_bind_db_resource_pool_internal, Line 51  
Resource pool 'Pool_Hekaton' does not exist or resource governor has not been reconfigured.  

Pool_name が予約済みのシステム プールを参照している
プール名 "INTERNAL" と "DEFAULT" は、システムプール用に予約されています。 データベースをこれらのいずれかに明示的にバインドすることは無効です。 システム プール名を入力した場合、次のエラーが返されます。
リソースプール% s はシステムリソースプールです。 このプロシージャを使用して、システムリソースプールを明示的にデータベースにバインドすることはできません。

Msg 41373, Level 16, State 1, Procedure sp_xtp_bind_db_resource_pool_internal, Line 51  
Database 'Hekaton_DB' cannot be explicitly bound to the resource pool 'internal'. A database can only be bound only to a user resource pool.  

データベースは既に別のリソースプールにバインドされています
データベースにバインドできるのは、1 度に 1 つのリソース プールだけです。 データベースを別のリソース プールにバインドする前に、リソース プールに対するデータベースのバインドを明示的に削除する必要があります。 sys.sp_xtp_unbind_db_resource_pool (の「transact-sql SQL)」を参照してください。
データベース% s は既にリソースプール% s にバインドされています。 新しいバインドを作成する前に、バインドを解除する必要があります。

Msg 41372, Level 16, State 1, Procedure sp_xtp_bind_db_resource_pool_internal, Line 54  
Database 'Hekaton_DB' is currently bound to a resource pool. A database must be unbound before creating a new binding.  

成功すると、 sp_xtp_bind_db_resource_pool 次のメッセージが返されます。

バインドに成功
成功すると、次の成功メッセージを返します。このメッセージは SQL ERRORLOG に記録されます。
ID %d のデータベースと ID %d のリソース プールの間にリソースのバインドが正常に作成されました。

A. 次のコード例では、データベース Hekaton_DB をリソースプール Pool_Hekaton にバインドします。

sys.sp_xtp_bind_db_resource_pool N'Hekaton_DB', N'Pool_Hekaton'  

バインドは、データベースが次にオンラインになったときに有効になります。

B. いくつかの基本的なチェックを含む、上記の例の拡張された例。 で次を実行します。 Transact-SQLSQL Server Management Studio:

DECLARE @resourcePool sysname = N'Pool_Hekaton';
DECLARE @database sysname = N'Hekaton_DB';

-- Check whether resource pool exists
IF NOT EXISTS (
    SELECT * FROM sys.resource_governor_resource_pools WHERE name = @resourcePool
    )
BEGIN
    SELECT N'Resource pool "' + @resourcePool + N'" does not exist or resource governor has not been reconfigured.';
END
-- Check whether database is already bound to a resource pool
ELSE IF EXISTS (
    SELECT p.name
    FROM sys.databases d
    JOIN sys.resource_governor_resource_pools p
    ON d.resource_pool_id = p.pool_id
    WHERE d.name = @database
    )
BEGIN
    SELECT N'Database "' + @database + N'" is currently bound to resource pool "' + @resourcePool  + N'". A database must be unbound before creating a new binding.';
END
-- Bind resource pool to database.
ELSE BEGIN
    EXEC sp_xtp_bind_db_resource_pool @database, @resourcePool; 
END 

必要条件

  • database_name で指定するデータベースと resource_pool_name で指定するリソース プールはどちらも、バインドする前に存在している必要があります。

  • CONTROL SERVER 権限が必要です。

参照

データベースを作成してリソース プールにバインドする方法については、「
sys.sp_xtp_unbind_db_resource_pool (Transact-SQL)