Partilhar via


sys.sp_xtp_bind_db_resource_pool (Transact-SQL)

Aplica-se: SQL Server

Associa o banco de dados OLTP in-memory especificado ao pool de recursos especificado. O banco de dados e o pool de recursos devem existir antes de executar o sys.sp_xtp_bind_db_resource_pool.

Esse procedimento do sistema cria uma associação entre o pool do Administrador de Recursos identificado pelo @resource_pool_name e o banco de dados identificado pelo @database_name. Não é necessário que o banco de dados tenha objetos com otimização de memória no momento da associação. Na ausência de objetos com otimização de memória, não há memória retirada do pool de recursos. Essa associação será usada pelo Administrador de Recursos para gerenciar a memória alocada por alocadores OLTP in-memory.

Se já houver uma associação em vigor para um determinado banco de dados, o procedimento retornará um erro. Um banco de dados não pode ter mais de uma associação ativa.

Convenções de sintaxe de Transact-SQL

Sintaxe

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

Argumentos

@database_name [ = ] 'database_name'

O nome de um banco de dados habilitado para OLTP in-memory existente. @database_name é sysname.

@resource_pool_name [ = ] 'resource_pool_name'

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

Mensagens

Quando um erro ocorrer, o sp_xtp_bind_db_resource_pool retornará uma dessas mensagens.

O banco de dados não existe

@database_name deve se referir a um banco de dados existente. Se não houver nenhum banco de dados com a ID especificada, a seguinte mensagem será retornada:

O ID do banco de dados %d não existe. Use uma ID de banco de dados válida para essa associaçã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.

Banco de dados é um banco de dados do sistema

As tabelas OLTP in-memory não podem ser criadas em bancos de dados do sistema. Portanto, é inválido criar uma associação de memória OLTP in-memory para esse banco de dados. O seguinte erro é retornado.

Database_name %s refere-se a um banco de dados do sistema. Os pools de recursos só podem ser associados a um banco de dados de usuários.

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 pelo @resource_pool_name deve existir antes da execução sp_xtp_bind_db_resource_pooldo . Se não houver nenhum pool com a ID especificada, o seguinte erro será retornado:

O pool de recursos %s não existe. Insira um nome válido do 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 de pool "INTERNAL" e "DEFAULT" são reservados para pools do sistema. Não é válido associar explicitamente um banco de dados a nenhum deles. Se um nome do pool do sistema é inserido, o erro a seguir será retornado:

O pool de recursos %s é um pool de recursos do sistema. Os pools de recursos do sistema podem não ser explicitamente associados a um banco 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.

O banco de dados já está associado a outro pool de recursos

Um banco de dados pode estar associado a apenas um pool de recursos de cada vez. As associações de banco de dados a pools de recursos devem ser explicitamente removidas antes de serem associadas a outro pool. Veja sys.sp_xtp_unbind_db_resource_pool.

O banco de dados %s já está associado ao pool de recursos %s. Você deve desvincular antes de criar uma nova associaçã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 obtém êxito, o sp_xtp_bind_db_resource_pool retorna a seguinte mensagem.

Ligação bem-sucedida

Quando bem-sucedida, a função retorna a seguinte mensagem de êxito, que é registrada no log de erros do SQL Server.

Uma associação de recursos foi criada com êxito entre o banco de dados com a ID %d e o pool de recursos com a ID %d.

Exemplos

R. O exemplo de código a seguir associa o banco de dados Hekaton_DB ao pool de Pool_Hekatonrecursos.

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

A associação entra em vigor da próxima vez que o banco de dados é colocado online.

B. Esta versão expandida do exemplo anterior inclui algumas verificações extras. Execute o seguinte Transact-SQL no 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

O banco de dados especificado pelo @database_name e o pool de recursos especificado pelo @resource_pool_name devem existir antes de vinculá-los.

Requer a permissão CONTROL SERVER.