sys.sp_xtp_bind_db_resource_pool (Transact-SQL)

Aplica-se a:SQL Server

Vincula o banco de dados OLTP na memória 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 por @resource_pool_name e o banco de dados identificado por @database_name. Não é necessário que o banco de dados tenha objetos otimizados para memória no momento da vinculação. Na ausência de objetos otimizados para 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 pelos alocadores OLTP na memória.

Se já houver uma associação em vigor para um determinado banco de dados, o procedimento retornará um erro. Em nenhuma hipótese um banco de dados 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 existente habilitado para OLTP na memória. @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:

ID do banco de dados %d não existe. Use um ID de banco de dados válido 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 na memória não podem ser criadas em bancos de dados do sistema. Assim, é inválido criar uma associação de memória OLTP na memória 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 vinculados a um banco de dados do usuário.

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

Os nomes de pool "INTERNAL" e "DEFAULT" são reservados para pools de sistema. Não é válido vincular 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 vinculados 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á vinculado 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. Consulte sys.sp_xtp_unbind_db_resource_pool (Transact-SQL).

O banco de dados %s já está vinculado 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.

Vinculaçã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 ID %d e o pool de recursos com ID %d.

Exemplos

R. O exemplo de código a seguir vincula o banco de dados Hekaton_DB ao pool Pool_Hekatonde recursos .

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 por @database_name e o pool de recursos especificado por @resource_pool_name devem existir antes de vinculá-los.

Requer a permissão CONTROL SERVER.