Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается обходное решение ошибки 3156, которая возникает при попытке восстановить базу данных с оптимизированной для памяти файловой группой в SQL Server.
Применяется к: SQL Server
Симптомы
При попытке восстановить базу данных с оптимизированной для памяти файловой группой в SQL Server вы получите следующее сообщение об ошибке:
Msg 3156, Level 16, State 6, Line 1
<Файл базы данных> не может быть восстановлен в файле Driver<>:\<Folder Path>\<Database Folder.> Укажите допустимое расположение для файла с помощью предложения WITH MOVE.
Причина
В процессе восстановления базы данных SQL Server ядро СУБД создаст папку для оптимизированной для памяти файловой группы. Эта проблема возникает, если папка уже имеет то же имя в том же пути к папке, а папка используется SQL Server или другими процессами.
Обходное решение
При восстановлении базы данных используйте другое имя папки или другой путь к папке.
Пример скрипта
Пример сценария создания базы данных с файловой группой
USE [master]; GO CREATE DATABASE Contoso ON PRIMARY ( NAME = 'Contoso_Primary', FILENAME= 'C:\SQLserver\Contoso\Contoso_data.mdf', SIZE=4MB, MAXSIZE=10MB, FILEGROWTH=1MB), FILEGROUP Contoso_FG1 ( NAME = 'Contoso_FG1', FILENAME = 'C:\SQLserver\Contoso\Contoso_FG1.ndf', SIZE = 1MB, MAXSIZE=10MB, FILEGROWTH=1MB) ALTER DATABASE Contoso ADD FILEGROUP [Contoso_FG1] CONTAINS MEMORY_OPTIMIZED_DATA GO
Пример сценария восстановления базы данных
USE [master] GO RESTORE DATABASE [Contoso] FROM DISK = N'C:\backup\compress\Contoso\Contoso.bak' WITH FILE = 1, MOVE N'Contoso_data' TO N'C:\SQLserver\Contoso\Contoso_data.mdf', MOVE N'Contoso_log' TO N'C:\SQLServer\Contoso\Contoso_log.ldf', MOVE N'<Database File>' TO N'<Driver>:\<Folder Path>\<Database Folder>', Replace, NOUNLOAD, STATS = 5 GO
Примечание.
<Database Folder>
Если этот параметр не используется,Replace
ключевое слово в скрипте обеспечит завершение процесса восстановления без ошибок.