sys.sp_xtp_bind_db_resource_pool (Transact-SQL)

Van toepassing op:SQL Server

Bindt de gespecificeerde In-Memory OLTP-database aan de opgegeven resource pool. Zowel de database als de resource pool moeten bestaan voordat de uitvoering begint sys.sp_xtp_bind_db_resource_pool.

Deze systeemprocedure creëert een binding tussen de Resource Governor pool die door @resource_pool_name is geïdentificeerd en de database die door @database_name is geïdentificeerd. Het is niet vereist dat de database op het moment van binding geheugengeoptimaliseerde objecten heeft. Bij afwezigheid van geheugengeoptimaliseerde objecten wordt er geen geheugen uit de resource pool gehaald. Deze binding zal door Resource Governor worden gebruikt om geheugen te beheren dat door In-Memory OLTP-toewijzingsapparaten is toegewezen.

Als er al een binding is voor een bepaalde database, geeft de procedure een foutmelding terug. Een database kan niet meer dan één actieve binding hebben.

Transact-SQL syntaxis-conventies

Syntax

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

Arguments

[ @database_name = ] N'database_name'

De naam van een bestaande In-Memory OLTP-ondersteunde database. @database_name is sysname.

[ @pool_name = ] N'pool_name'

De naam van een bestaande bronpool. @resource_pool_name is sysname.

Messages

Wanneer een fout optreedt sp_xtp_bind_db_resource_pool , wordt een van deze berichten teruggegeven.

Database bestaat niet

@database_name moet verwijzen naar een bestaande database. Als er geen database is met het opgegeven ID, wordt het volgende bericht teruggegeven:

Database-ID %d bestaat niet. Gebruik alstublieft een geldige database-ID voor deze binding.

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.

Database is een systeemdatabase

In-Memory OLTP-tabellen kunnen niet worden aangemaakt in systeemdatabases. Het is dus ongeldig om een binding van In-Memory OLTP-geheugen voor zo'n database te maken. De volgende fout wordt geretourneerd:

Database_name %s verwijst naar een systeemdatabase. Resource pools kunnen alleen aan een gebruikersdatabase worden gekoppeld.

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.

Resourcepool bestaat niet

De resourcepool die door @resource_pool_name wordt geïdentificeerd, moet bestaan voordat deze wordt uitgevoerd.sp_xtp_bind_db_resource_pool Als er geen pool is met de opgegeven ID, wordt de volgende foutmelding teruggegeven:

Resource Pool %s bestaat niet. Voer alstublieft een geldige naam van de resource pool in.

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 verwijst naar een gereserveerde systeempool

De poolnamen "INTERNAL" en "DEFAULT" zijn gereserveerd voor systeempools. Het is niet geldig om expliciet een database aan een van beide te binden. Als een naam van een systeempool wordt ingevoerd, wordt de volgende foutmelding teruggegeven:

Resource Pool %s is een systeemresourcepool. Systeemresourcepools zijn mogelijk niet expliciet gebonden aan een database met deze procedure.

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.

De database is al gekoppeld aan een andere resource pool

Een database kan op elk moment aan slechts één resource pool worden gekoppeld. Databasebindingen aan resource pools moeten expliciet worden verwijderd voordat ze aan een andere pool kunnen worden gebonden. Zie sys.sp_xtp_unbind_db_resource_pool.

Database %s is al gebonden aan resource pool %s. Je moet losmaken voordat je een nieuwe binding kunt maken.

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.

Wanneer succesvol, sp_xtp_bind_db_resource_pool geeft het volgende bericht terug.

Succesvolle binding

Wanneer succesvol, geeft de functie het volgende succesbericht terug, dat wordt gelogd in het SQL Server foutlogboek.

Er is met succes een resource binding gemaakt tussen de database met ID %d en de resource pool met ID %d.

Examples

A. Het volgende codevoorbeeld bindt de database Hekaton_DB aan de resource pool Pool_Hekaton.

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

De binding wordt van kracht wanneer de database de volgende keer online wordt gebracht.

B. Deze uitgebreide versie van het vorige voorbeeld bevat enkele extra controles. Voer de volgende Transact-SQL uit in 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

Zowel de database die door @database_name is gespecificeerd als de resourcepool die door @resource_pool_name is gespecificeerd, moeten bestaan voordat ze worden gebonden.

Hiervoor is de machtiging CONTROL SERVER vereist.