我正在将具有多个文件组的数据库之一迁移到 Azure Sql Server。根据 DMA(数据迁移助手)的说法,Azure 似乎还不支持多个文件组。
现在我想将文件组合并回单个文件。
通过在互联网上搜索,我发现了以下命令来缩小文件组以清空文件组。我相信只需将内容合并到主文件组中,然后即可删除该文件组。
DBCC SHRINKFILE ('ndfFile', EMPTYFILE);
GO
ALTER DATABASE myDb REMOVE file ndfFile
GO
当我运行此程序时,我收到以下错误消息:
Msg 2556, Level 16, State 1, Line 2
There is insufficient space in the filegroup to complete the emptyfile operation.
我已检查主文件组文件并启用自动增长
我已经进行了完整备份并删除了数据库并再次恢复了数据库,但仍然没有成功。
我还尝试使用单个文件创建一个新数据库,并尝试使用导入/导出将数据复制到新数据库中。但是,导入/导出向导仅创建表,但不创建引用完整性约束或主键等。
当我使用“生成脚本”功能创建对象来创建所有对象时,即使选择了“插入标识”选项,我也无法复制数据。
问题1:有什么方法可以将MyDb.bak备份文件恢复到单个文件(和日志文件)中?
问题2:有没有办法将文件组合并为单个文件?
最佳答案
您需要使用WITH(DROP_EXISTING=ON) 将现有数据从其他文件组移动到主文件组,如this 中所述。文章。
之后,您可以使用 ALTER DATABASE 语句删除文件组。
ALTER DATABASE [DB1] REMOVE FILEGROUP [fg_Secondary]
最后,您将能够将数据库迁移到 Azure SQL 数据库。
关于sql-server - 文件组中没有足够的空间来完成空文件操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47306254/