我对 MSSQLServer mdf 文件有些不明白。有人要求我用以前的版本替换某个文件(两个版本之间数据库已被修改),但当我在备份(使用 Bacula 制作)中查找该文件时,文件大小相同!
我的问题是:文件是否具有预定义的大小,当空间不足时,它会动态地增大(嗯,我说清楚了吗?),所以我的备份具有相同的大小但内容不同?
抱歉,但我不熟悉 SQL Server....
感谢您的帮助,
杰瑞米
答案1
Sql 数据库有点像大型 Excel 电子表格。
有列,有线。
当您删除数据时,它不会缩小数据库,因为它不会删除行和数据,只会删除值(如果您处于完整日志模式,它会存储日志文件的更改)。
您必须备份数据库以回收日志和存储文件上的空间。(日志和 mdf)。
答案2
(附言:我希望你也在跑步SQL Server 备份。就像在 SQL Server 内部一样。继续前进....)
这在一定程度上取决于您在表中使用的实际数据类型以及您更常运行的查询类型。例如,整数列使用 4 个字节来存储数据,无论您在其中存储哪个整数。日期时间使用 4 个字节来存储数据,无论您在其中存储哪个日期。无论如何,唯一标识符 (GUID) 都是 16 个字节。更新后,存储大小保持不变。
变量数据类型,如 nvarchar,是可变的(呵呵)。例如,Nvarchar 的大小是输入字符数的两倍(以字节为单位)。
此外,您的数据库大小在创建时是预先分配的,可以使用您输入的值或服务器的默认值(在模型数据库中设置)。因此,它可能尚未填满预分配的空间,特别是如果您执行的更新多于插入,或者它不是很忙。(并且它是否自动增长取决于您的设置。)
以下是各种数据类型的参考。