由于SQL Server不同版本之间会有一些不同的功能,比如在SQL Server 2008 企业版中可以使用数据压缩,但是在标准版中却不支持这个功能。我们不能将包含这些功能的数据库迁移到不支持这些功能的 SQL Server 版本。下面我尝试将使用数据压缩的数据库还原到标准版会出现错误:
所以如果要还原到其他版本的数据库,我们需要知道当前数据库是不是启用了特殊功能。使用 sys.dm_db_persisted_sku_features 动态管理视图可列出当前数据库中启用的所有特定于版本的功能。
sys.dm_db_persisted_sku_features 可能会列出仅限于 SQL Server Enterprise 或 Developer Edition 的下列数据库更改功能:
压缩。指示至少一个表或索引使用数据压缩或 vardecimal 存储格式。若要使数据库能够迁移到 SQL Server Enterprise 或 Developer 以外的版本,请使用ALTER TABLE 或ALTER INDEX 语句删除数据压缩。若要删除 vardecimal 存储格式,请使用 sp_tableoption 语句。
分区。指示数据库包含已分区表、已分区索引、分区方案或分区函数。若要使数据库能够移动到 SQL Server Enterprise 或 Developer 以外的版本,将表修改到单个分区上是不够的。必须删除相应的已分区表。如果该表包含数据,请使用 SWITCH PARTITION 将每个分区转换成无分区表。然后删除已分区表、分区方案和分区函数。
TransparentDataEncryption。指示使用透明数据加密对数据库进行加密。若要删除透明数据加密,请使用 ALTER DATABASE 语句。有关详细信息,请参阅透明数据加密 (TDE)。
ChangeCapture。指示数据库已启用变更数据捕获。若要删除变更数据捕获,请使用 sys.sp_cdc_disable_db 存储过程。
这样我们就了解了数据库使用的一些特定版本的功能,在数据库迁移之前作出正确的迁移计划。