Freigeben über


sys.sp_xtp_bind_db_resource_pool (Transact-SQL)

Gilt für: SQL Server

Bindet die angegebene OLTP-Datenbank im Arbeitsspeicher an den angegebenen Ressourcenpool. Vor der Ausführung von sys.sp_xtp_bind_db_resource_pool müssen die Datenbank und der Ressourcenpool vorhanden sein.

Dieses Systemverfahren erstellt eine Bindung zwischen dem durch @resource_pool_name identifizierten Ressourcenhaupthalterpool und der durch @database_name identifizierten Datenbank. Es ist nicht erforderlich, dass die Datenbank zum Zeitpunkt der Bindung über speicheroptimierte Objekte verfügt. Wenn keine speicheroptimierten Objekte vorhanden sind, gibt es keinen Arbeitsspeicher aus dem Ressourcenpool. Diese Bindung wird vom Ressourcengouverneur verwendet, um den von In-Memory OLTP-Allokatoren zugeordneten Speicher zu verwalten.

Wenn bereits eine Bindung für eine bestimmte Datenbank vorhanden ist, gibt die Prozedur einen Fehler zurück. Eine Datenbank darf nicht mehr als eine aktive Bindung haben.

Transact-SQL-Syntaxkonventionen

Syntax

sys.sp_xtp_bind_db_resource_pool
    [ @database_name = ] 'database_name'
    , [ @resource_pool_name = ] 'resource_pool_name'
[ ; ]

Argumente

[ @database_name = ] 'database_name'

Der Name einer vorhandenen oltp-aktivierten In-Memory-OLTP-Datenbank. @database_name ist "sysname".

[ @resource_pool_name = ] 'resource_pool_name'

Der Name eines vorhandenen Ressourcenpools. @resource_pool_name ist "sysname".

Nachrichten

Bei einem Fehler gibt sp_xtp_bind_db_resource_pool eine der folgenden Meldungen zurück.

Die Datenbank ist nicht vorhanden

@database_name muss auf eine vorhandene Datenbank verweisen. Wenn keine Datenbank mit der angegebenen ID vorhanden ist, wird die folgende Meldung zurückgegeben:

Die Datenbank-ID "%d" ist nicht vorhanden. Verwenden Sie für diese Bindung eine gültige Datenbank-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.

Datenbank ist eine Systemdatenbank

In-Memory OLTP-Tabellen können nicht in Systemdatenbanken erstellt werden. Daher ist es ungültig, eine Bindung des IN-Memory-OLTP-Speichers für eine solche Datenbank zu erstellen. Der folgende Fehler wird zurückgegeben:

Database_name %s bezieht sich auf eine Systemdatenbank. Ressourcenpools können nur an eine Benutzerdatenbank gebunden werden.

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.

Der Ressourcenpool ist nicht vorhanden.

Der durch @resource_pool_name identifizierte Ressourcenpool muss vor der Ausführung sp_xtp_bind_db_resource_poolvorhanden sein. Wenn kein Pool mit der angegebenen ID vorhanden ist, wird der folgende Fehler zurückgegeben:

Der Ressourcenpool "%s" ist nicht vorhanden. Geben Sie einen gültigen Ressourcenpoolnamen ein.

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 bezieht sich auf einen reservierten Systempool

Die Poolnamen "INTERNAL" und "DEFAULT" sind für Systempools reserviert. Es ist nicht gültig, eine Datenbank explizit an eine dieser Datenbanken zu binden. Bei Eingabe eines Systempoolnamens wird der folgende Fehler zurückgegeben:

Der Ressourcenpool "%s" ist ein Systemressourcenpool. Systemressourcenpools sind unter Verwendung dieses Verfahrens möglicherweise nicht explizit an eine Datenbank gebunden.

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.

Die Datenbank ist bereits an einen anderen Ressourcenpool gebunden.

Eine Datenbank kann jeweils nur an einen Ressourcenpool gebunden werden. Datenbankbindungen an Ressourcenpools müssen explizit entfernt werden, bevor eine Bindung an einen anderen Pool erfolgen kann. Siehe sys.sp_xtp_unbind_db_resource_pool.

Datenbank %s ist bereits an den Ressourcenpool %s gebunden. Sie müssen die Bindung aufheben, bevor Sie eine neue Bindung erstellen können.

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.

Bei erfolgreicher Ausführung gibt sp_xtp_bind_db_resource_pool die folgende Meldung zurück.

Erfolgreiche Bindung

Bei erfolgreicher Ausführung gibt die Funktion die folgende Erfolgsmeldung zurück, die im SQL Server-Fehlerprotokoll protokolliert wird.

Eine Ressourcenbindung wurde erfolgreich zwischen der Datenbank mit der ID %d und dem Ressourcenpool mit der ID %d erstellt.

Beispiele

A. Im folgenden Codebeispiel wird die Datenbank Hekaton_DB an den Ressourcenpool Pool_Hekatongebunden.

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

Die Bindung wird wirksam, wenn die Datenbank das nächste Mal online geschaltet wird.

B. Diese erweiterte Version des vorherigen Beispiels enthält einige zusätzliche Überprüfungen. Führen Sie die folgenden Transact-SQL in SQL Server Management Studio aus:

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
        INNER 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

Anforderungen

Sowohl die durch @database_name angegebene Datenbank als auch der durch @resource_pool_name angegebene Ressourcenpool müssen vorhanden sein, bevor sie gebunden werden.

Erfordert die CONTROL SERVER-Berechtigung.