jao*_*jao 4 sql-server migration sql-server-2008-r2 restore
这个问题可能已经被问过十几次了,但我在这里或 SO 都找不到。
我可以将 SQL Server 2008 R2 数据库附加/恢复到我的本地 SQL 2008 R2 Express 实例吗?
如果您使用了任何持久的企业功能,则不会。如果您使用了其中的任何一个,那么sys.dm_db_persisted_sku_features当您尝试在低于 Enterprise 的任何版本上打开/附加/恢复此数据库时,都会出现一个条目,您将生成一个异常并且该数据库将无法打开。可能的持久 SKU 功能列表是:
压缩。表示至少一个表或索引使用数据压缩或 vardecimal 存储格式。若要将数据库移动到除 Enterprise 或 Developer 之外的 SQL Server 版本,请使用 ALTER TABLE 或 ALTER INDEX 语句来删除数据压缩。要删除 vardecimal 存储格式,请使用 sp_tableoption 语句。
分区。指示数据库包含分区表、分区索引、分区方案或分区函数。若要将数据库移动到除 Enterprise 或 Developer 之外的 SQL Server 版本,将表修改为位于单个分区上是不够的。您必须删除分区表。如果表包含数据,则使用 SWITCH PARTITION 将每个分区转换为非分区表。然后删除分区表、分区方案和分区函数。
透明数据加密。表示使用透明数据加密对数据库进行加密。要删除透明数据加密,请使用 ALTER DATABASE 语句。有关详细信息,请参阅透明数据加密 (TDE)。
更改捕获。表示数据库已启用更改数据捕获。要删除更改数据捕获,请使用 sys.sp_cdc_disable_db 存储过程。
此外,特别是对于 Express Edition,数据库必须小于 Express Editions 支持的最大数据库大小 (10Gb)。如果您使用任何特定于服务包的选项,可能会出现并发症,sp_db_increased_partitions但我怀疑是这种情况。
如果您的数据库没有上述所有内容,那么 Express 将打开它而不会出现问题。如果源是标准版,那么它肯定不会具有任何持久的企业功能,唯一的问题是大小。
您需要确保 SQL Server 是相同的主要版本(SQL Server 2008R2,而不是 SQL Server 2008)。修补级别(应用的服务包和累积更新)无关紧要,因为数据库格式不能在次要版本之间更改,但建议将 Express 修补到最新的 SP 并应用最新的 CU。