sys.dm_db_persisted_sku_features (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)

数据库引擎的某些功能会更改信息存储在数据库文件中的方式。 这些功能仅限于特定 SQL Server 版本。 包含这些功能的数据库无法移动到不支持这些功能的 SQL Server 版本。 sys.dm_db_persisted_sku_features使用动态管理视图列出当前数据库中启用的版本特定的功能。

列名称 数据类型 描述
feature_name sysname 在数据库中启用但不受 SQL Server 所有版本支持的功能的外部名称。 必须先删除此功能,然后才能将数据库迁移到 SQL Server 的所有可用版本。
feature_id int 与功能关联的功能 ID。 标识为仅供参考。 不支持。 不能保证将来的兼容性。

权限

对于 SQL Server 2019 (15.x) 和以前的版本,需要对数据库具有 VIEW DATABA标准版 STATE 权限。

对于 SQL Server 2022(16.x)及更高版本,需要对数据库具有 VIEW DATABA标准版 PERFORMANCE STATE 权限。

备注

如果没有可能受数据库中特定版本限制的功能,则视图不返回任何行。

sys.dm_db_persisted_sku_features 可将以下数据库更改功能列为限制为特定的 SQL Server 版本:

  • ChangeCapture:指示数据库已启用变更数据捕获。 若要删除更改数据捕获,请使用 sys.sp_cdc_disable_db 存储过程。 有关详细信息,请参阅关于变更数据捕获 (SQL Server)

  • ColumnStoreIndex:指示至少有一个表具有列存储索引。 若要使数据库移动到不支持此功能的 SQL Server 版本,请使用 DROP INDEX 或 ALTER INDEX 语句删除列存储索引。 有关详细信息,请参阅 列存储索引

  • 压缩:指示至少有一个表或索引使用数据压缩或 vardecimal 存储格式。 若要启用数据库移动到不支持此功能的 SQL Server 版本,请使用 ALTER TABLEALTER INDEX 语句删除数据压缩。 若要删除 vardecimal 存储格式,请使用 sp_tableoption 该语句。 有关详细信息,请参阅 Data Compression

  • MultipleFSContainers:指示数据库使用多个 FILESTREAM 容器。 数据库具有具有多个容器(文件)的 FILESTREAM 文件组。 有关详细信息,请参阅 FILESTREAM (SQL Server)

  • InMemoryOLTP:指示数据库使用内存中 OLTP。 数据库具有 MEMORY_OPTIMIZED_DATA 文件组。 有关详细信息,请参阅 内存中 OLTP(内存中优化)

  • 分区。 指示数据库包含已分区表、已分区索引、分区方案或分区函数。 若要使数据库移动到企业版或开发人员版以外的 SQL Server,该数据库不足以修改表,使其位于单个分区上。 必须删除相应的已分区表。 如果该表包含数据,请使用 SWITCH PARTITION 将每个分区转换成无分区表。 然后删除已分区表、分区方案和分区函数。

  • TransparentDataEncryption。 指示使用透明数据加密对数据库进行加密。 若要删除透明数据加密,请使用 ALTER DATABASE 语句。 有关详细信息,请参阅透明数据加密 (TDE)

注意

从 SQL Server 2016 (13.x) Service Pack 1 开始,这些功能(除 TransparentDataEncryption)在多个 SQL Server 版本中可用,不限于企业版或开发人员版。

若要确定数据库是否使用仅限于特定版本的任何功能,请对数据库执行下面的语句:

SELECT feature_name
FROM sys.dm_db_persisted_sku_features;
GO

有关 Windows 上 SQL Server 各版本支持的功能列表,请参阅:

有关 Linux 上 SQL Server 各版本支持的功能列表,请参阅: