sys.sp_xtp_bind_db_resource_pool (Transact-SQL)

Si applica a: sìSQL Server (tutte le versioni supportate)

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.

Tramite questa procedura di sistema viene creata un'associazione tra il pool di Resource Governor identificato da resource_pool_name e il database identificato da database_name. Non è necessario che gli oggetti del database siano tutti ottimizzati per la memoria al momento dell'associazione. In assenza di questi oggetti, non viene prelevata alcuna memoria dal pool di risorse. Questa associazione verrà utilizzata da Resource Governor per gestire la memoria allocata dagli allocatori di OLTP in memoria come descritto di seguito.

Se è già disponibile un'associazione per un database specificato, viene restituito un errore dalla procedura. In nessun caso un database può disporre di più associazioni attive.

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

Sintassi

sys.sp_xtp_bind_db_resource_pool 'database_name', 'resource_pool_name'  

Argomenti

database_name
Nome di un database abilitato per OLTP in memoria esistente.

resource_pool_name
Nome di un pool di risorse esistente.

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 è disponibile alcun database con l'ID specificato, viene restituito il messaggio seguente:
L'ID 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.  

Il database è un database di sistema
Le tabelle di OLTP in memoria non possono essere create in database di sistema. Pertanto, non è possibile creare un'associazione di memoria di 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 essere disponibile prima di eseguire sp_xtp_bind_db_resource_pool. Se non è disponibile alcun pool con l'ID specificato, viene restituito l'errore seguente:
Il pool di risorse %s non esiste. Immettere un nome di pool di risorse valido.

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 di pool "INTERNAL" e "DEFAULT" sono riservati ai pool di sistema. Non è possibile 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 non possono essere associati in modo esplicito a un database usando 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 (Transact-SQL).
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 completata
Quando l'operazione viene completata, tramite la funzione viene restituito il seguente messaggio di operazione riuscita, che viene registrato in SQL ERRORLOG
Associazione di risorse creata correttamente tra il database con ID %d e il pool di risorse con ID %d.

Esempi

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

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

L'associazione viene applicata alla successiva connessione del database.

B. Esempio esteso dell'esempio precedente che include alcuni controlli di base. Eseguire le operazioni seguenti Transact-SQL 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
    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 sia il pool di risorse specificato da resource_pool_name devono essere disponibili prima di poter essere associati.

  • È richiesta l'autorizzazione CONTROL SERVER.

Vedere anche

a un pool di risorse, vedere l'argomento
sys.sp_xtp_unbind_db_resource_pool (Transact-SQL)