sys.sp_xtp_bind_db_resource_pool (Transact-SQL)

Gäller för:SQL Server

Binder den specificerade In-Memory OLTP-databasen till den angivna resurspoolen. Både databasen och resurspoolen måste existera innan de körs sys.sp_xtp_bind_db_resource_pool.

Denna systempromotor skapar en bindning mellan den Resource Governor pool som identifierats av @resource_pool_name och databasen som identifierats av @database_name. Det krävs inte att databasen har några minnesoptimerade objekt vid bindningstillfället. I avsaknad av minnesoptimerade objekt tas inget minne från resurspoolen. Denna bindning kommer att användas av Resource Governor för att hantera minne som allokerats av In-Memory OLTP-allokatorer.

Om det redan finns en bindning för en given databas returnerar proceduren ett fel. En databas kan inte ha mer än en aktiv bindning.

Transact-SQL syntaxkonventioner

Syntax

sys.sp_xtp_bind_db_resource_pool
    [ @database_name = ] N'database_name'
    , [ @pool_name = ] N'pool_name'
[ ; ]

Arguments

[ @database_name = ] N'database_name'

Namnet på en befintlig In-Memory OLTP-aktiverad databas. @database_name är sysname.

[ @pool_name = ] N'pool_name'

Namnet på en befintlig resurspool. @resource_pool_name är sysname.

Messages

När ett fel uppstår sp_xtp_bind_db_resource_pool returneras ett av dessa meddelanden.

Databasen finns inte

@database_name måste hänvisa till en befintlig databas. Om det inte finns någon databas med det angivna ID:t returneras följande meddelande:

Databas-ID %d existerar inte. Använd ett giltigt databas-ID för denna bindning.

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.

Databas är en systemdatabas

In-Memory OLTP-tabeller kan inte skapas i systemdatabaser. Därför är det ogiltigt att skapa en bindning av In-Memory OLTP-minnet för en sådan databas. Följande fel returneras:

Database_name %s syftar på en systemdatabas. Resurspooler kan endast vara bundna till en användardatabas.

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.

Resurspool existerar inte

Resurspoolen som identifieras av @resource_pool_name måste existera innan den körs sp_xtp_bind_db_resource_pool. Om det inte finns någon pool med det angivna ID:t returneras följande fel:

Resource Pool %s existerar inte. Vänligen ange ett giltigt resurspoolnamn.

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 avser en reservat systempool

Poolnamnen "INTERNAL" och "DEFAULT" är reserverade för systempooler. Det är inte giltigt att uttryckligen binda en databas till någon av dessa. Om ett systempoolnamn anges returneras följande fel:

Resurspool%s är en systemresurspool. Systemresurspooler får inte vara uttryckligen bundna till en databas med denna procedur.

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.

Databasen är redan bunden till en annan resurspool

En databas kan bindas till endast en resurspool åt gången. Databasbindningar till resurspooler måste uttryckligen tas bort innan de kan bindas till en annan pool. Vi sys.sp_xtp_unbind_db_resource_pool.

Databas %s är redan bunden till resurspoolen %s. Du måste avbinda innan du kan skapa en ny bindning.

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.

När det lyckas returneras sp_xtp_bind_db_resource_pool följande meddelande.

Lyckad bindning

När funktionen lyckas returnerar den följande framgångsmeddelande, som loggas i SQL Server fellogg.

En resursbindning har framgångsrikt skapats mellan databasen med ID %d och resurspoolen med ID %d.

Examples

A. Följande kodexempel binder databasen Hekaton_DB till resurspoolen Pool_Hekaton.

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

Bindningen börjar gälla nästa gång databasen är online.

B. Denna utökade version av det föregående exemplet innehåller några extra kontroller. Utför följande Transact-SQL i SQL Server Management Studio:

DECLARE @resourcePool AS SYSNAME = N'Pool_Hekaton';
DECLARE @database AS 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 AS d
        INNER JOIN sys.resource_governor_resource_pools AS 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
    EXECUTE sp_xtp_bind_db_resource_pool
        @database,
        @resourcePool;
END

Requirements

Både databasen som specificeras av @database_name och resurspoolen som specificeras av @resource_pool_name måste finnas innan de binds.

Kräver behörighet för kontroll av server.