![MSSQL - 备份数据库大小错误](https://linux22.com/image/1593805/MSSQL%20-%20%E5%A4%87%E4%BB%BD%E6%95%B0%E6%8D%AE%E5%BA%93%E5%A4%A7%E5%B0%8F%E9%94%99%E8%AF%AF.png)
我有一个 10GB 大小的数据库备份 (.bak),我通过以下方式将其导入我的 MSSQL 数据库:
USE [master]
GO
RESTORE DATABASE [<dbname>] FROM DISK = N'$BAKFILEWITHPATH' WITH FILE = 1, MOVE N'$LOGICNAME' TO N'/var/opt/mssql/data/$BAKFILENOEXT.mdf', MOVE N'$LOGFILE' TO N'/var/opt/mssql/data/$BAKFILELOG.ldf', NOUNLOAD, STATS = 5
GO
(由于此查询是使用 bash 脚本创建的,因此包含多个变量。)这样就成功了。然后我删除了占备份大小 90% 的 BLOB 列。(~9GB)
USE [$BAKFILENOEXT]
GO
ALTER TABLE [dbo].[BLOB] DROP COLUMN [Blob]
GO
然后我将导入的不包含 Blob 行的数据库再次备份到 .bak 文件中。备份现在应该只有 1GB 大,对吗?
BACKUP DATABASE [$BAKFILENOEXT] TO DISK = N'$_mountpoint/$BAKFILE' WITH FORMAT, INIT, MEDIADESCRIPTION = N'$blobstatus', MEDIANAME = N'$blobstatus', NAME = N'complete backup without blob column', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
但是 BAK 文件又有 10GB 大。怎么会这样?它不再有 BLOB 行,它必须是 1GB。但它是 10GB。怎么会这样?
站点说明:操作系统:Ubuntu 16.04 SQL:MSSQL Server 2017,我使用 SQLCMD 工具启动 sql 脚本