sql-server - 文件组中没有足够的空间来完成空文件操作

标签 sql-server azure azure-sql-database

我正在将具有多个文件组的数据库之一迁移到 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.

我已检查主文件组文件并启用自动增长

enter image description here

我已经进行了完整备份并删除了数据库并再次恢复了数据库,但仍然没有成功。

我还尝试使用单个文件创建一个新数据库,并尝试使用导入/导出将数据复制到新数据库中。但是,导入/导出向导仅创建表,但不创建引用完整性约束或主键等。

当我使用“生成脚本”功能创建对象来创建所有对象时,即使选择了“插入标识”选项,我也无法复制数据。

问题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/

相关文章:

SQL Azure : Executing SQL directly; no cursor

Azure 数据工厂副本

sql-server - 间歇性 SQL Server ODBC 超时已过期

node.js - 如何在 Linux 上的 Azure 应用服务上运行时远程实时调试 Node.js 应用程序

sql-server - 我应该在 SQL Server 中为位字段建立索引吗?

azure - 二头肌矫正任务循环

azure - 对于 Azure 中的网站和服务层,除了辅助角色之外,我是否还需要其他角色?

azure-sql-database - 如何使用 C# 语言将用户与机器人的对话数据存储到 azure SQL 数据库中?

sql - 如何在SQL中从字符串中提取某些第n个字符

sql-server - 输入格式错误时存储过程中的错误处理