Condividi tramite


sys.sp_xtp_bind_db_resource_pool (Transact-SQL)

Si applica a: SQL Server

Associa il database OLTP in memoria specificato al pool di risorse specificato. Sia il database sia il pool di risorse devono essere disponibili prima di eseguire sys.sp_xtp_bind_db_resource_pool.

Questa procedura di sistema crea un'associazione tra il pool di Resource Governor identificato da @resource_pool_name e il database identificato da @database_name. Non è necessario che il database disponga di oggetti ottimizzati per la memoria al momento dell'associazione. In assenza di oggetti ottimizzati per la memoria, non è presente memoria prelevata dal pool di risorse. Questa associazione verrà usata da Resource Governor per gestire la memoria allocata dagli allocatori OLTP in memoria.

Se è già presente un'associazione per un determinato database, la procedura restituisce un errore. Un database non può avere più di un'associazione attiva.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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

Argomenti

[ @database_name = ] 'database_name'

Nome di un database OLTP in memoria esistente abilitato. @database_name è sysname.

[ @resource_pool_name = ] 'resource_pool_name'

Nome di un pool di risorse esistente. @resource_pool_name è sysname.

Messaggi

In caso di errore, tramite sp_xtp_bind_db_resource_pool viene restituito uno di questi messaggi.

Il database non esiste

@database_name deve fare riferimento a un database esistente. Se non è presente alcun database con l'ID specificato, viene restituito il messaggio seguente:

L'ID di database %d non esiste. Usare un ID di database valido per questa associazione.

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 è un database di sistema

Non è possibile creare tabelle OLTP in memoria nei database di sistema. Non è quindi possibile creare un'associazione di memoria OLTP in memoria per un database di questo tipo. Viene restituito l'errore seguente:

Database_name %s fa riferimento a un database di sistema. I pool di risorse possono essere associati solo a un database utente.

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.

Il pool di risorse non esiste

Il pool di risorse identificato da @resource_pool_name deve esistere prima di eseguire sp_xtp_bind_db_resource_pool. Se non è presente alcun pool con l'ID specificato, viene restituito l'errore seguente:

Il pool di risorse %s non esiste. Immettere un nome valido per il pool di risorse.

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 fa riferimento a un pool di sistema riservato

I nomi dei pool "INTERNAL" e "DEFAULT" sono riservati per i pool di sistema. Non è valido associare in modo esplicito un database a uno di questi. Se viene immesso un nome di pool di sistema, viene restituito l'errore seguente:

Il pool di risorse %s è un pool di risorse di sistema. I pool di risorse di sistema potrebbero non essere associati in modo esplicito a un database utilizzando questa procedura.

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.

Il database è già associato a un altro pool di risorse

Un database può essere associato a un solo pool di risorse in qualsiasi momento. Le associazioni di database ai pool di risorse devono essere rimosse in modo esplicito prima che possano essere associate a un altro pool. Vedere sys.sp_xtp_unbind_db_resource_pool.

Il database %s è già associato al pool di risorse %s. È necessario annullare l'associazione prima di poter creare una nuova associazione.

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.

Quando l'operazione viene completata, tramite sp_xtp_bind_db_resource_pool viene restituito il messaggio riportato di seguito.

Associazione riuscita

In caso di esito positivo, la funzione restituisce il messaggio di esito positivo seguente, che viene registrato nel log degli errori di SQL Server.

È stata creata correttamente un'associazione di risorse tra il database con ID %d e il pool di risorse con ID %d.

Esempi

R. Nell'esempio di codice seguente il database Hekaton_DB viene associato al pool Pool_Hekatondi risorse .

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

L'associazione viene applicata alla successiva connessione del database.

B. Questa versione espansa dell'esempio precedente include alcuni controlli aggiuntivi. Eseguire il codice Transact-SQL seguente in SQL 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
        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

Requisiti

Sia il database specificato da @database_name che il pool di risorse specificato da @resource_pool_name devono esistere prima di associarli.

È richiesta l'autorizzazione CONTROL SERVER.