sys.sp_xtp_bind_db_resource_pool (Transact-SQL)
Se aplica a: SQL Server
Enlaza la base de datos OLTP en memoria especificada al grupo de recursos especificado. La base de datos y el grupo de recursos de servidor se deben haber creado antes de ejecutar sys.sp_xtp_bind_db_resource_pool
.
Este procedimiento del sistema crea un enlace entre el grupo de Resource Governor identificado por @resource_pool_name y la base de datos identificada por @database_name. No es necesario que la base de datos tenga ningún objeto optimizado para memoria en el momento del enlace. En ausencia de objetos optimizados para memoria, no hay memoria tomada del grupo de recursos. Resource Governor usará este enlace para administrar la memoria asignada por los asignadores OLTP en memoria.
Si ya hay un enlace en vigor para una base de datos determinada, el procedimiento devuelve un error. Una base de datos no puede tener más de un enlace activo.
Convenciones de sintaxis de Transact-SQL
Sintaxis
sys.sp_xtp_bind_db_resource_pool
[ @database_name = ] 'database_name'
, [ @resource_pool_name = ] 'resource_pool_name'
[ ; ]
Argumentos
[ @database_name = ] 'database_name'
Nombre de una base de datos habilitada para OLTP en memoria existente. @database_name es sysname.
[ @resource_pool_name = ] 'resource_pool_name'
Nombre de un grupo de recursos de servidor existente. @resource_pool_name es sysname.
Mensajes
Cuando se produce un error, sp_xtp_bind_db_resource_pool
devuelve uno de estos mensajes.
La base de datos no existe
@database_name debe hacer referencia a una base de datos existente. Si no hay ninguna base de datos con el identificador especificado, se devuelve el siguiente mensaje:
El id. de base de datos %d no existe. Use un identificador de base de datos válido para este enlace.
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 datos es una base de datos del sistema
Las tablas OLTP en memoria no se pueden crear en bases de datos del sistema. Por lo tanto, no es válido crear un enlace de memoria OLTP en memoria para dicha base de datos. Se devuelve el siguiente error:
Database_name %s hace referencia a una base de datos del sistema. Los grupos de recursos solo se pueden enlazar a una base de datos de usuario.
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.
El grupo de recursos no existe
El grupo de recursos identificado por @resource_pool_name debe existir antes de ejecutar sp_xtp_bind_db_resource_pool
. Si no hay ningún grupo con el identificador especificado, se devuelve el siguiente error:
El grupo de recursos %s no existe. Escriba un nombre de grupo de recursos válido.
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 hace referencia a un grupo de sistemas reservado
Los nombres de grupo "INTERNAL" y "DEFAULT" están reservados para los grupos del sistema. No es válido enlazar explícitamente una base de datos a ninguno de estos. Si se especifica un nombre de grupo de servidores del sistema, se devuelve el error siguiente:
El grupo de recursos %s es un grupo de recursos del sistema. Es posible que los grupos de recursos del sistema no estén enlazados explícitamente a una base de datos mediante este procedimiento.
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 datos ya está enlazada a otro grupo de recursos
Una base de datos se puede enlazar a solo un grupo de recursos de servidor en todo momento. Los enlaces de la base de datos a grupos de recursos de servidor se deben haber quitado explícitamente antes de que se puedan enlazar a otro grupo. Consulte sys.sp_xtp_unbind_db_resource_pool.
La base de datos %s ya está enlazada al grupo de recursos %s. Debe desenlace antes de poder crear un nuevo enlace.
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.
Cuando el proceso se realiza correctamente, sp_xtp_bind_db_resource_pool
devuelve el siguiente mensaje.
Enlace correcto
Cuando se ejecuta correctamente, la función devuelve el siguiente mensaje correcto, que se registra en el registro de errores de SQL Server.
Se ha creado correctamente un enlace de recursos entre la base de datos con el identificador %d y el grupo de recursos con el identificador %d.
Ejemplos
A En el ejemplo de código siguiente se enlaza la base de datos Hekaton_DB
al grupo Pool_Hekaton
de recursos .
sys.sp_xtp_bind_db_resource_pool N'Hekaton_DB', N'Pool_Hekaton';
El enlace surte efecto la próxima vez que la base de datos pase a estar en línea.
B. Esta versión expandida del ejemplo anterior incluye algunas comprobaciones adicionales. Ejecute lo siguiente con Transact-SQL en 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
Requisitos
Tanto la base de datos especificada por @database_name como el grupo de recursos especificado por @resource_pool_name deben existir antes de enlazarlos.
Requiere el permiso CONTROL SERVER.