【问题标题】:SQL Server 2008 vs SQL Server 2008 Express sizeSQL Server 2008 与 SQL Server 2008 Express 大小
【发布时间】:2011-02-16 00:54:23
【问题描述】:

我将 SQL Server 数据库(源)迁移到 SQL Server Express 数据库(命运)。在 SSMS 中使用“生成脚本...”。

我验证了源数据库中的表(使用 3 个最大的表进行测试)是否具有相同的行数和 Express,并且看起来都正常。

我执行sp_spaceused,发现原来的数据库大小是16MB,而Express版本是4MB。

Express DB 使用的空间是否更少,或者这是否表明迁移出现问题?

谢谢

【问题讨论】:

  • 您是否尝试在 Express 实例上创建新数据库并将数据导入那里?
  • 你也迁移索引了吗?
  • 我创建了数据库,然后使用“生成脚本...”任务同时为模式和数据编写脚本,该任务具有高级选项“脚本的数据类型”,值为“模式”和数据”。

标签: sql database sql-server-2008 sql-server-2008-express


【解决方案1】:

原因很简单。当您迁移数据时,您正在执行非常干净、有序的插入。没有垃圾数据,没有删除的记录,没有空的未使用页面等。

此外,如果您曾经从原始数据库中删除了列(包含数据),则不会删除数据,只是将其标记为不可用 - 这又会占用空间。

缩小数据库将恢复一些空间,如果您包括移动数据页选项,它甚至会进一步打包数据。但请检查删除的列并重建这些表。

http://www.simple-talk.com/community/blogs/andras/archive/2009/02/19/72068.aspx

【讨论】:

  • 啊,太好了!谢谢cyberkiwi。
【解决方案2】:

Sql Server 引擎会根据自己的需要扩展文件的大小。例如,您可能在某一时刻在源数据库中拥有比当前更多的数据。我敢打赌,如果您在源数据库上运行收缩数据库命令,您会发现文件大小相同/相似。所以简而言之,不,文件大小的差异并不表明出现问题。

【讨论】:

  • 收缩数据库不捕获丢弃的列
猜你喜欢
  • 2019-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多