sys.sp_xtp_bind_db_resource_pool (Transact-SQL)
S'applique à : SQL Server
Lie la base de données OLTP en mémoire spécifiée au pool de ressources spécifié. La base de données et le pool de ressources doivent exister avant l'exécution de sys.sp_xtp_bind_db_resource_pool
.
Cette procédure système crée une liaison entre le pool Resource Governor identifié par @resource_pool_name et la base de données identifiée par @database_name. Il n’est pas nécessaire que la base de données dispose d’objets mémoire optimisés au moment de la liaison. En l’absence d’objets à mémoire optimisée, il n’y a pas de mémoire extraite du pool de ressources. Cette liaison sera utilisée par Resource Governor pour gérer la mémoire allouée par les allocateurs OLTP en mémoire.
S’il existe déjà une liaison en place pour une base de données donnée, la procédure retourne une erreur. En aucun cas, une base de données ne peut avoir plusieurs liaisons actives.
Conventions de la syntaxe Transact-SQL
Syntaxe
sys.sp_xtp_bind_db_resource_pool
[ @database_name = ] 'database_name'
, [ @resource_pool_name = ] 'resource_pool_name'
[ ; ]
Arguments
[ @database_name = ] 'database_name'
Nom d’une base de données OLTP en mémoire existante. @database_name est sysname.
[ @resource_pool_name = ] 'resource_pool_name'
Nom d'un pool de ressources existant. @resource_pool_name est sysname.
Messages
Lorsqu'une erreur se produit, sp_xtp_bind_db_resource_pool
retourne l'un de ces messages.
La base de données n’existe pas
@database_name devez faire référence à une base de données existante. S’il n’existe aucune base de données avec l’ID spécifié, le message suivant est retourné :
L’ID de base de données %d n’existe pas. Utilisez un ID de base de données valide pour cette liaison.
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.
La base de données est une base de données système
Les tables OLTP en mémoire ne peuvent pas être créées dans les bases de données système. Par conséquent, il n’est pas valide de créer une liaison de mémoire OLTP en mémoire pour une telle base de données. L'erreur suivante est retournée :
Database_name %s fait référence à une base de données système. Les pools de ressources peuvent uniquement être liés à une base de données utilisateur.
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.
Le pool de ressources n’existe pas
Le pool de ressources identifié par @resource_pool_name doit exister avant l’exécution sp_xtp_bind_db_resource_pool
. S’il n’existe aucun pool avec l’ID spécifié, l’erreur suivante est retournée :
Le pool de ressources %s n’existe pas. Entrez un nom de pool de ressources valide.
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 fait référence à un pool de systèmes réservés
Les noms de pool « INTERNAL » et « DEFAULT » sont réservés aux pools système. Il n’est pas valide de lier explicitement une base de données à l’un de ces éléments. Si un nom de pool système est fourni, l'erreur suivante est retournée :
Le pool de ressources %s est un pool de ressources système. Les pools de ressources système peuvent ne pas être explicitement liés à une base de données à l’aide de cette procédure.
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.
La base de données est déjà liée à un autre pool de ressources
Une base de données ne peut être liée qu'à un seul pool de ressources à un moment donné. Les liaisons de bases de données aux pools de ressources doivent être supprimées explicitement avant de pouvoir être associées à un autre pool. Consultez sys.sp_xtp_unbind_db_resource_pool (Transact-SQL).
La base de données %s est déjà liée au pool de ressources %s. Vous devez dissocier avant de pouvoir créer une liaison.
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.
En cas de réussite de l'opération, sp_xtp_bind_db_resource_pool
retourne le message suivant.
Liaison réussie
En cas de réussite, la fonction retourne le message de réussite suivant, qui est enregistré dans le journal des erreurs SQL Server.
Une liaison de ressources a été créée avec succès entre la base de données avec l’ID %d et le pool de ressources avec l’ID %d.
Exemples
R. L’exemple de code suivant lie la base de données Hekaton_DB
au pool Pool_Hekaton
de ressources.
sys.sp_xtp_bind_db_resource_pool N'Hekaton_DB', N'Pool_Hekaton';
La liaison prendra effet lors de la prochaine mise en ligne (ONLINE) de la base de données.
B. Cette version développée de l’exemple précédent inclut des vérifications supplémentaires. Exécutez les opérations Transact-SQL suivantes dans 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
Spécifications
La base de données spécifiée par @database_name et le pool de ressources spécifié par @resource_pool_name doivent exister avant de les lier.
Requiert l'autorisation CONTROL SERVER.