sys.sp_xtp_bind_db_resource_pool (Transact-SQL)

Aplica-se a: SQL Server

Vincula a base de In-Memory OLTP especificada ao pool de recursos especificado. Tanto a base de dados como o pool de recursos devem existir antes de executar sys.sp_xtp_bind_db_resource_pool.

Este procedimento do sistema cria uma ligação entre o pool de Resource Governor identificado por @resource_pool_name e a base de dados identificada por @database_name. Não é obrigatório que a base de dados tenha quaisquer objetos otimizados para memória no momento da ligação. Na ausência de objetos otimizados para memória, não há memória retirada do pool de recursos. Esta ligação será usada por Resource Governor para gerir a memória alocada por In-Memory alocadores OLTP.

Se já existir uma ligação para uma dada base de dados, o procedimento devolve um erro. Uma base de dados não pode ter mais do que uma ligação ativa.

Transact-SQL convenções de sintaxe

Sintaxe

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

Arguments

[ @database_name = ] N'database_name'

O nome de uma base de dados existente In-Memory compatível com OLTP. @database_name é sysname.

[ @pool_name = ] N'pool_name'

O nome de um pool de recursos existente. @resource_pool_name é sysname.

Messages

Quando ocorre sp_xtp_bind_db_resource_pool um erro, devolve uma destas mensagens.

A base de dados não existe

@database_name deve referir-se a uma base de dados existente. Se não houver base de dados com o ID especificado, a seguinte mensagem é devolvida:

O ID da base de dados %d não existe. Por favor, utilize um ID de base de dados válido para esta ligação.

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.

Base de dados é uma base de dados do sistema

In-Memory tabelas OLTP não podem ser criadas em bases de dados do sistema. Assim, é inválido criar uma ligação de In-Memory memória OLTP para tal base de dados. O seguinte erro é devolvedo:

Database_name %s refere-se a uma base de dados do sistema. Os pools de recursos só podem estar vinculados a uma base de dados de utilizadores.

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.

O pool de recursos não existe

O pool de recursos identificado por @resource_pool_name deve existir antes de executar sp_xtp_bind_db_resource_pool. Se não houver pool com o ID especificado, o seguinte erro é devolvedo:

O Pool de Recursos %s não existe. Por favor, introduza um nome válido de pool de recursos.

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 refere-se a um pool de sistemas reservados

Os nomes do pool "INTERNAL" e "DEFAULT" são reservados para pools do sistema. Não é válido vincular explicitamente uma base de dados a qualquer um destes casos. Se for introduzido o nome de um pool de sistema, o seguinte erro é devolvedo:

Resource Pool %s é um pool de recursos do sistema. Os pools de recursos do sistema podem não estar explicitamente ligados a uma base de dados usando este procedimento.

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.

A base de dados já está ligada a outro pool de recursos

Uma base de dados pode ser vinculada a apenas um pool de recursos em qualquer momento. As ligações de bases de dados a pools de recursos devem ser explicitamente removidas antes de poderem ser associadas a outra pool. Veja sys.sp_xtp_unbind_db_resource_pool.

A %s da base de dados já está ligada ao pool de recursos %s. Tens de desvincular antes de poderes criar uma nova ligação.

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 bem-sucedido, sp_xtp_bind_db_resource_pool retorna a seguinte mensagem.

Encadernação bem-sucedida

Quando bem-sucedida, a função devolve a seguinte mensagem de sucesso, que é registada no registo de erros do SQL Server.

Foi criada com sucesso uma ligação de recursos entre a base de dados com ID %d e o pool de recursos com ID %d.

Examples

A. O seguinte exemplo de código vincula a base de dados Hekaton_DB ao pool Pool_Hekatonde recursos .

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

A vinculação entra em vigor na próxima vez que o banco de dados for colocado online.

B. Esta versão expandida do exemplo anterior inclui algumas verificações extra. Execute as seguintes Transact-SQL em 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

Requisitos

Tanto a base de dados especificada por @database_name como o pool de recursos especificado por @resource_pool_name devem existir antes de as vincular.

Requer a permissão de CONTROL SERVER.