sys.sp_xtp_bind_db_resource_pool (Transact-SQL)
適用於:SQL Server
將指定的記憶體內部 OLTP 資料庫系結至指定的資源集區。 執行 之前 sys.sp_xtp_bind_db_resource_pool
,資料庫和資源集區必須同時存在。
此系統程式會在@resource_pool_name所識別的資源管理員集區與@database_name所識別的資料庫之間建立系結。 資料庫不需要在系結時具有任何記憶體優化物件。 如果沒有記憶體優化物件,就不會從資源集區擷取任何記憶體。 資源管理員會使用此系結來管理記憶體內部 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必須參考現有的資料庫。 如果沒有具有指定識別碼的資料庫,則會傳回下列訊息:
資料庫識別碼 %d 不存在。 請使用此系結的有效資料庫標識碼。
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.
資源集區不存在
執行 之前sp_xtp_bind_db_resource_pool
,@resource_pool_name所識別的資源集區必須存在。 如果沒有指定識別碼的集區,則會傳回下列錯誤:
資源集區 %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 (Transact-SQL) 。
資料庫 %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 錯誤記錄檔中。
已在標識子為 %d 的資料庫與標識元為 %d 的資源集區之間成功建立資源系結。
範例
A. 下列程式代碼範例會將資料庫 Hekaton_DB
系結至資源集區 Pool_Hekaton
。
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 權限。