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 в памяти.
Если для данной базы данных уже есть привязка, процедура возвращает ошибку. У базы данных не может быть более одной активной привязки.
Соглашения о синтаксисе Transact-SQL
Синтаксис
sys.sp_xtp_bind_db_resource_pool
[ @database_name = ] 'database_name'
, [ @resource_pool_name = ] 'resource_pool_name'
[ ; ]
Аргументы
[ @database_name = ] 'database_name'
Имя существующей базы данных OLTP с поддержкой 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.
Пул ресурсов не существует
Пул ресурсов, определенный @resource_pool_name , должен существовать перед выполнением sp_xtp_bind_db_resource_pool
. Если пул с указанным идентификатором отсутствует, возвращается следующая ошибка:
Пул ресурсов %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.
Привязка ресурсов успешно создана между базой данных с идентификатором %d и пулом ресурсов с идентификатором %d.
Примеры
А. В следующем примере кода база данных Hekaton_DB
привязывается к пулу Pool_Hekaton
ресурсов.
sys.sp_xtp_bind_db_resource_pool N'Hekaton_DB', N'Pool_Hekaton';
Привязка вступит в силу при следующем переводе базы данных в режим «в сети».
B. Эта расширенная версия предыдущего примера включает некоторые дополнительные проверки. Выполните следующую команду Transact-SQL в 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
Требования
База данных, указанная @database_name, и пул ресурсов, указанный @resource_pool_name, должны существовать перед привязкой.
Необходимо разрешение CONTROL SERVER.