Even though you have enough memory to restore a database with memory-optimized tables, you want to follow best practices and bind the database to a named resource pool. Since the database must exist before you can bind it to the pool restoring your database is a multi-step process. This topic walks you through that process.
Restoring a database with memory-optimized tables
The following steps fully restore the database IMOLTP_DB and bind it to the Pool_IMOLTP.
When you restore a database, NORECOVERY causes the database to be created and the disk image restored without consuming memory.
RESTORE DATABASE IMOLTP_DB FROM DISK = 'C:\IMOLTP_test\IMOLTP_DB.bak' WITH NORECOVERY
The following Transact-SQL creates a resource pool named Pool_IMOLTP with 50% of memory available for its use. After the pool is created, the Resource Governor is reconfigured to include Pool_IMOLTP.
CREATE RESOURCE POOL Pool_IMOLTP WITH (MAX_MEMORY_PERCENT = 50); ALTER RESOURCE GOVERNOR RECONFIGURE; GO
Use the system function
sp_xtp_bind_db_resource_pool to bind the database to the resource pool. The function takes two parameters: the database name followed by the resource pool name.
The following Transact-SQL defines a binding of the database IMOLTP_DB to the resource pool Pool_IMOLTP. The binding does not become effective until you complete the next step.
EXEC sp_xtp_bind_db_resource_pool 'IMOLTP_DB', 'Pool_IMOLTP' GO
When you restore the database with recovery the database is brought online and all the data restored.
RESTORE DATABASE IMOLTP_DB WITH RECOVERY
Once the database is bound to the named resource pool and restored with recovery, monitor the SQL Server, Resource Pool Stats Object. For more information see SQL Server, Resource Pool Stats Object.