减少数据库大小以还原到 SQL Server Express

car*_*reo 5 sql-server sql-server-2008-r2

我有一个 SQL Server 2008 R2 数据库,大约 15 GB。

我想为使用 SQL Server 2008 R2 Express 的合作伙伴复制它。

我删除了很多表和行,现在我确定数据小于2 GB。

我做了一个备份,发送给合作伙伴,他试图恢复它,但他收到一个错误:

CREATE DATABASE 或 ALTER DATABASE 失败,因为由此产生的累积数据库大小将超过每个数据库 10240 MB 的许可限制

我做错了什么?

Aar*_*and 9

所有数据文件的文件大小总和必须小于 10 GB,而不是文件中的数据量。所以,从一些表中删除数据,甚至删除一些表,都不能解决问题。您需要缩小文件,如下所示:

ALTER DATABASE mydb MODIFY FILE (name = N'logical_name', size = 2048MB);
Run Code Online (Sandbox Code Playgroud)

如果数据库大小不能减少到 2 GB,这将失败。您可能需要先发出:

DBCC SHRINKFILE(logical_name, 2048);
Run Code Online (Sandbox Code Playgroud)

如果您使用任何形式的 SHRINKFILE,那么您需要在文件资源管理器中验证数据文件实际上和您想象的一样小(因为收缩操作会尽可能地缩小,并在可以时静默停止达不到您的目标尺寸)。

然后进行备份,然后在 SQL Server Express 上还原(@@VERSION当然,与源相同或更高)。

您可能会遇到其他问题,例如,如果您使用了 Express 不支持的任何功能。