sys.sp_xtp_bind_db_resource_pool(Transact-SQL)
적용 대상: SQL Server
지정된 메모리 내 OLTP 데이터베이스를 지정된 리소스 풀에 바인딩합니다. 데이터베이스와 리소스 풀은 모두 실행 sys.sp_xtp_bind_db_resource_pool
하기 전에 존재해야 합니다.
이 시스템 프로시저는 @resource_pool_name 식별되는 Resource Governor 풀과 @database_name 의해 식별된 데이터베이스 간에 바인딩을 만듭니다. 바인딩 시 데이터베이스에 메모리 최적화 개체가 필요하지 않습니다. 메모리 최적화 개체가 없는 경우 리소스 풀에서 가져온 메모리가 없습니다. 이 바인딩은 Resource Governor에서 메모리 내 OLTP 할당자가 할당한 메모리를 관리하는 데 사용됩니다.
지정된 데이터베이스에 대한 바인딩이 이미 있는 경우 프로시저는 오류를 반환합니다. 데이터베이스에는 둘 이상의 활성 바인딩이 있을 수 없습니다.
구문
sys.sp_xtp_bind_db_resource_pool
[ @database_name = ] 'database_name'
, [ @resource_pool_name = ] 'resource_pool_name'
[ ; ]
인수
[ @database_name = ] 'database_name'
기존 메모리 내 OLTP 사용 데이터베이스의 이름입니다. @database_name sysname입니다.
[ @resource_pool_name = ] 'resource_pool_name'
기존 리소스 풀의 이름입니다. @resource_pool_name sysname입니다.
메시지
오류가 발생하면 이러한 메시지 중 하나가 반환됩니다 sp_xtp_bind_db_resource_pool
.
데이터베이스가 없습니다.
@database_name 기존 데이터베이스를 참조해야 합니다. 지정된 ID를 가진 데이터베이스가 없으면 다음 메시지가 반환됩니다.
데이터베이스 ID %d이(가) 없습니다. 이 바인딩에 유효한 데이터베이스 ID를 사용하세요.
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.
데이터베이스가 시스템 데이터베이스입니다.
시스템 데이터베이스에서는 메모리 내 OLTP 테이블을 만들 수 없습니다. 따라서 이러한 데이터베이스에 대한 메모리 내 OLTP 메모리의 바인딩을 만드는 것은 유효하지 않습니다. 다음 오류가 반환됩니다.
Database_name %s은(는) 시스템 데이터베이스를 나타냅니다. 리소스 풀은 사용자 데이터베이스에만 바인딩될 수 있습니다.
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.
리소스 풀이 없습니다.
@resource_pool_name 식별되는 리소스 풀은 실행sp_xtp_bind_db_resource_pool
하기 전에 있어야 합니다. 지정된 ID를 가진 풀이 없으면 다음 오류가 반환됩니다.
리소스 풀 %s이(가) 없습니다. 유효한 리소스 풀 이름을 입력하세요.
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 예약된 시스템 풀을 참조합니다.
풀 이름 "INTERNAL" 및 "DEFAULT"는 시스템 풀에 예약되어 있습니다. 데이터베이스를 이들 중 하나에 명시적으로 바인딩하는 것은 유효하지 않습니다. 시스템 풀 이름을 입력하면 다음 오류가 반환됩니다.
리소스 풀 %s은(는) 시스템 리소스 풀입니다. 시스템 리소스 풀은 이 절차를 사용하여 데이터베이스에 명시적으로 바인딩되지 않을 수 있습니다.
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.
데이터베이스가 이미 다른 리소스 풀에 바인딩되어 있습니다.
데이터베이스는 언제든지 하나의 리소스 풀에만 바인딩할 수 있습니다. 리소스 풀에 대한 데이터베이스 바인딩을 명시적으로 제거해야 다른 풀에 바인딩할 수 있습니다. sys.sp_xtp_unbind_db_resource_pool 참조하세요.
데이터베이스 %s이(가) 이미 리소스 풀 %s에 바인딩되어 있습니다. 새 바인딩을 만들려면 먼저 바인딩을 해제해야 합니다.
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.
성공 시 sp_xtp_bind_db_resource_pool
에서 다음 메시지를 반환합니다.
바인딩 성공
성공하면 함수는 SQL Server 오류 로그에 기록되는 다음 성공 메시지를 반환합니다.
ID가 %d인 데이터베이스와 ID가 %d인 리소스 풀 간에 리소스 바인딩이 성공적으로 만들어졌습니다.
예제
A. 다음 코드 예제에서는 리소스 풀Pool_Hekaton
에 데이터베이스 Hekaton_DB
를 바인딩합니다.
sys.sp_xtp_bind_db_resource_pool N'Hekaton_DB', N'Pool_Hekaton';
바인딩은 다음에 데이터베이스가 온라인 상태가 될 때 적용됩니다.
B. 이전 예제의 확장된 버전에는 몇 가지 추가 검사가 포함되어 있습니다. SQL Server Management Studio에서 다음 Transact-SQL을 실행합니다.
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
요구 사항
@database_name 지정한 데이터베이스와 @resource_pool_name 지정한 리소스 풀은 모두 바인딩하기 전에 존재해야 합니다.
CONTROL SERVER 권한이 필요합니다.