sys.databases (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric 中的 SQL 分析终结点Microsoft Fabric 中的仓库

为 SQL Server实例中的每个数据库都包含一行。

如果数据库未 ONLINE设置或 AUTO_CLOSE 设置为 ON 且数据库已关闭,则某些列的值可以是 NULL。 如果数据库处于 OFFLINE 状态,则低权限的用户无法看到对应行。 若要在数据库处于 OFFLINE 状态的情况下查看对应行,用户必须至少具有 ALTER ANY DATABASE 服务器级权限或 master 数据库中的 CREATE DATABASE 权限。

列名称 数据类型 说明
name sysname 数据库名称、SQL Server 实例或Azure SQL 数据库逻辑服务器中唯一的数据库名称。
database_id int 数据库 ID,在 SQL Server 实例中唯一。

在Azure SQL 数据库中,这些值在逻辑服务器中是唯一的,可与列上的database_idsys.database_service_objectives联接,但不能与列存在的其他系统视图database_id联接。 有关详细信息,请参阅 DB_ID
source_database_id int Non-NULL = 该数据库快照的源数据库 ID。
NULL = 非数据库快照。
owner_sid varbinary(85) 注册到服务器的数据库外部所有者的 SID(安全标识符)。 有关谁可以拥有数据库的信息,请参阅 ALTER AUTHORIZATION 的“数据库的 ALTER AUTHORIZATION”部分。
create_date datetime 数据库的创建或重命名日期。 对于 tempdb,该值在每次重新启动服务器时都会发生更改。 在对Azure SQL 数据库执行重命名操作时,create_date不会更改。
compatibility_level tinyint 对应于兼容行为的 SQL Server 版本的整数。

70 - SQL Server 7.0 到 SQL Server 2008 (10.0.x)

80 - SQL Server 2000 (8.x) 到 SQL Server 2008 R2 (10.50.x)

90 - SQL Server 2008 (10.0.x) 到 SQL Server 2012 (11.x)

100 - SQL Server 2008 (10.0.x) 及更高版本和 Azure SQL 数据库

110 - SQL Server 2012 (11.x) 及更高版本和 Azure SQL 数据库

120 - SQL Server 2014 (12.x) 及更高版本和 Azure SQL 数据库

130 - SQL Server 2016 (13.x) 及更高版本和 Azure SQL 数据库

140 - SQL Server 2017 (14.x) 及更高版本和 Azure SQL 数据库

150 - SQL Server 2019 (15.x) 及更高版本和 Azure SQL 数据库

160 - SQL Server 2022 (16.x) 及更高版本和 Azure SQL 数据库
collation_name sysname 数据库的排序规则。 作为数据库中的默认排序规则。
NULL = 数据库未联机,或 AUTO_CLOSE 设置为 ON 且数据库已关闭。
user_access tinyint 用户访问设置:
0 = 已指定 MULTI_USER
1 = 已指定 SINGLE_USER
2 = 已指定 RESTRICTED_USER
user_access_desc nvarchar(60) 用户访问设置的说明。
is_read_only bit 1 = 数据库为 READ_ONLY
0 = 数据库为 READ_WRITE
is_auto_close_on bit 1 = AUTO_CLOSE 为 ON
0 = AUTO_CLOSE 为 OFF
is_auto_shrink_on bit 1 = AUTO_SHRINK 为 ON
0 = AUTO_SHRINK 为 OFF
State tinyint
0 = ONLINE
1 = RESTORING
2 = RECOVERING 1
3 = RECOVERY_PENDING 1
4 = SUSPECT
5 = EMERGENCY 1
6 = OFFLINE 1
7 = COPYING 2
10 = OFFLINE_SECONDARY 2

注意:对于 Always On 数据库,可以查询 sys.dm_hadr_database_replica_statesdatabase_statedatabase_state_desc 列。

1SQL Server 2008 (10.0.x) 及更高版本和 Azure SQL 数据库
2适用于:Azure SQL 数据库和活动异地复制
state_desc nvarchar(60) 数据库状态的说明。 请参阅状态。
is_in_standby bit 对于还原日志而言,数据库是只读的。
is_cleanly_shutdown bit 1 = 数据库完全关闭;在启动时不需要恢复
0 = 数据库并未完全关闭;在启动时需要恢复
is_supplemental_logging_enabled bit 1 = SUPPLEMENTAL_LOGGING 为 ON
0 = SUPPLEMENTAL_LOGGING 为 OFF
snapshot_isolation_state tinyint 允许的快照隔离事务状态,如 ALLOW_SNAPSHOT_ISOLATION 选项所设置:
0 = 快照隔离状态为 OFF(默认值)。 不允许使用快照隔离。
1 = 快照隔离状态为 ON。 允许使用快照隔离。
2 = 快照隔离状态正在转换到 OFF 状态。 所有事务都将其修改版本化。 无法使用快照隔离启动新的事务。 数据库仍保持向 OFF 状态转换,直到所有在执行 ALTER DATABASE 时处于活动状态的事务完成。
3 = 快照隔离状态正在转换到 ON 状态。 新事务都将其修改版本化。 在快照隔离状态变为 1 (ON) 之前,事务无法使用快照隔离。 数据库仍保持向 ON 状态转换,直到所有在执行 ALTER DATABASE 时处于活动状态的更新事务完成。
snapshot_isolation_state_desc nvarchar(60) 允许的快照隔离事务状态的说明,它由 ALLOW_SNAPSHOT_ISOLATION 选项设置。
is_read_committed_snapshot_on bit 1 = READ_COMMITTED_SNAPSHOT 选项为 ON。 read-committed 隔离级别下的读操作基于快照扫描,没有获取锁。
0 = READ_COMMITTED_SNAPSHOT 选项为 OFF(默认)。 read-committed 隔离级别下的读操作使用共享锁。
recovery_model tinyint 选定的恢复模式:
1 = FULL
2 = BULK_LOGGED
3 = SIMPLE
recovery_model_desc nvarchar(60) 选定的恢复模式的说明。
page_verify_option tinyint PAGE_VERIFY 选项的设置:
0 = NONE
1 = TORN_PAGE_DETECTION
2 = CHECKSUM
page_verify_option_desc nvarchar(60) PAGE_VERIFY 选项设置的说明。
is_auto_create_stats_on bit 1 = AUTO_CREATE_STATISTICS 为 ON
0 = AUTO_CREATE_STATISTICS 为 OFF
is_auto_create_stats_incremental_on bit 指示自动统计信息的增量选项的默认设置。
0 = 自动创建统计信息不是增量统计信息
1 = 如果可能,自动创建统计信息是增量统计信息

适用于:SQL Server 2014 (12.x) 及更高版本。
is_auto_update_stats_on bit 1 = AUTO_UPDATE_STATISTICS 为 ON
0 = AUTO_UPDATE_STATISTICS 为 OFF
is_auto_update_stats_async_on bit 1 = AUTO_UPDATE_STATISTICS_ASYNC 为 ON
0 = AUTO_UPDATE_STATISTICS_ASYNC 为 OFF
is_ansi_null_default_on bit 1 = ANSI_NULL_DEFAULT 为 ON
0 = ANSI_NULL_DEFAULT 为 OFF
is_ansi_nulls_on bit 1 = ANSI_NULLS 为 ON
0 = ANSI_NULLS 为 OFF
is_ansi_padding_on bit 1 = ANSI_PADDING 为 ON
0 = ANSI_PADDING 为 OFF
is_ansi_warnings_on bit 1 = ANSI_WARNINGS 为 ON
0 = ANSI_WARNINGS 为 OFF
is_arithabort_on bit 1 = ARITHABORT 为 ON
0 = ARITHABORT 为 OFF
is_concat_null_yields_null_on bit 1 = CONCAT_NULL_YIELDS_NULL 为 ON
0 = CONCAT_NULL_YIELDS_NULL 为 OFF
is_numeric_roundabort_on bit 1 = NUMERIC_ROUNDABORT 为 ON
0 = NUMERIC_ROUNDABORT 为 OFF
is_quoted_identifier_on bit 1 = QUOTED_IDENTIFIER 为 ON
0 = QUOTED_IDENTIFIER 为 OFF
is_recursive_triggers_on bit 1 = RECURSIVE_TRIGGERS 为 ON
0 = RECURSIVE_TRIGGERS 为 OFF
is_cursor_close_on_commit_on bit 1 = CURSOR_CLOSE_ON_COMMIT 为 ON
0 = CURSOR_CLOSE_ON_COMMIT 为 OFF
is_local_cursor_default bit 1 = CURSOR_DEFAULT 为局部默认值
0 = CURSOR_DEFAULT 为全局默认值
is_fulltext_enabled bit 1 = 针对数据库启用全文
0 = 针对数据库禁用全文
is_trustworthy_on bit 1 = 数据库已标记为可信
0 = 数据库尚未标记为可信
默认情况下,还原的数据库或附加的数据库都未启用可信。
is_db_chaining_on bit 1 = 跨数据库所有权链接为 ON
0 = 跨数据库所有权链接为 OFF
is_parameterization_forced bit 1 = 参数化为 FORCED
0 = 参数化为 SIMPLE
is_master_key_encrypted_by_server bit 1 = 数据库具有加密的主密钥
0 = 数据库没有加密的主密钥
is_query_store_on bit 1 = 针对此数据库启用查询存储。 查看 sys.database_query_store_options 以查看查询存储状态。
0 = 未启用查询存储

适用于:SQL Server 2016 (13.x) 及更高版本。
is_published bit 1 = 数据库为事务复制拓扑或快照复制拓扑中的发布数据库
0 = 不是发布数据库
is_subscribed bit 不使用此列。 它将始终返回 0,而与数据库的订阅服务器状态无关。
is_merge_published bit 1 = 数据库为合并复制拓扑中的发布数据库
0 = 不是合并复制拓扑中的发布数据库
is_distributor bit 1 = 数据库为复制拓扑的分发数据库
0 = 不是复制拓扑的分发数据库
is_sync_with_backup bit 1 = 数据库标记为与备份进行复制同步
0 = 没有标记为与备份进行复制同步
service_broker_guid uniqueidentifier 该数据库的服务代理标识符。 用作路由表中目标的 broker_instance
is_broker_enabled bit 1 = 该数据库中的代理当前正在发送和接收消息。
0 = 所有已发送的消息都会停留在传输队列中,已接收的消息不会置于该数据库的队列中。
默认情况下,还原的数据库或附加的数据库都禁用了代理。 与此相关的例外是数据库镜像,其中 Broker 在故障转移后启用。
log_reuse_wait tinyint 事务日志空间重复使用正在等待最后一个检查点之前的下列各项之一。 有关这些值的更详细说明,请参阅 事务日志



0 = 无
1 = 检查点(当数据库具有内存优化的数据文件组时,应看到 log_reuse_wait 列指示 checkpointxtp_checkpoint1
2 = 日志备份 1
3 = 主动备份或还原 1
4 = 活动事务 1
5 = 数据库镜像 1
6 = 复制 1
7 = 数据库快照创建 1
8 = 日志扫描
9 = AlwaysOn 可用性组辅助副本正将此数据库的事务日志记录应用到相应的辅助数据库。 2
9 = 其他(暂时)3
10 = 仅供内部使用 2
11 = 仅供内部使用 2
12 = 仅供内部使用 2
13 = 最早的页面 2
14 = 其他 2
16 = XTP_CHECKPOINT(当数据库具有内存优化的数据文件组时,应看到 log_reuse_wait 列指示 checkpointxtp_checkpoint4
17 = 使用加速数据库恢复时的 sLog 扫描 5

1适用于:SQL Server 2008 (10.0.x) 及更高版本
2适用于:SQL Server 2012 (11.x) 及更高版本
3SQL Server 2008 R2 (10.50.x) 及更早版本
4适用于:SQL Server 2014 (12.x) 及更高版本
5适用于:SQL Server 2019 (15.x) 及更高版本
log_reuse_wait_desc nvarchar(60) 日志空间的重复使用正在等待最后一个检查点的描述。 可能的值:
NOTHING
CHECKPOINT
LOG_BACKUP
ACTIVE_BACKUP_OR_RESTORE
ACTIVE_TRANSACTION
DATABASE_MIRRORING
复制
DATABASE_SNAPSHOT_CREATION
LOG_SCAN
AVAILABILITY_REPLICA
OLDEST_PAGE
XTP_CHECKPOINT
SLOG_SCAN
is_date_correlation_on bit 1 = DATE_CORRELATION_OPTIMIZATION 为 ON
0 = DATE_CORRELATION_OPTIMIZATION 为 OFF
is_cdc_enabled bit 1 = 对数据库启用变更数据捕获。 有关详细信息,请参阅 sys.sp_cdc_enable_db (Transact-SQL)
is_encrypted bit 指示数据库是否加密(反映使用 ALTER DATABASE SET ENCRYPTION 子句最后设置的状态)。 可以是以下其中一个值:
1 = 已加密
0 = 未加密
有关数据库加密的详细信息,请参阅透明数据加密(TDE)。
如果数据库正在解密过程中,is_encrypted 会显示值 0。 可以使用 sys.dm_database_encryption_keys 动态管理视图来查看加密过程的状态。
is_honor_broker_priority_on bit 指示数据库是否遵守会话优先级(反映使用 ALTER DATABASE SET HONOR_BROKER_PRIORITY 子句最后设置的状态)。 可以是以下其中一个值:
1 = HONOR_BROKER_PRIORITY 为 ON
0 = HONOR_BROKER_PRIORITY 为 OFF
默认情况下,还原的数据库或附加的数据库都会关闭代理优先级。
replica_id uniqueidentifier 数据库参与的可用性组(如果有)的本地 AlwaysOn 可用性组可用性副本的唯一标识符。
NULL = 数据库不是可用性组中的可用性副本的一部分。

适用于:SQL Server 2012 (11.x) 及更高版本和 Azure SQL 数据库
group_database_id uniqueidentifier 数据库在其参与的 AlwaysOn 可用性组(如果有)中的唯一标识符。 在主副本上以及在所有辅助副本上(数据库在这些辅助副本上加入可用性组),该数据库的 group_database_id 都是相同的。
NULL = 数据库不是任何可用性组中的可用性副本的一部分。

适用于:SQL Server 2012 (11.x) 及更高版本和 Azure SQL 数据库
resource_pool_id int 映射到此数据库的资源池的 ID。 此资源池控制对该数据库中的内存优化表可用的总内存。

适用于:SQL Server 2014 (12.x) 及更高版本
default_language_lcid smallint 指示包含的数据库的默认语言的本地 ID (lcid)。

注意: 用作 配置默认语言(服务器配置选项)sp_configure函数。 对于非包含数据库,此值为 NULL。

适用于:SQL Server 2012 (11.x) 及更高版本和 Azure SQL 数据库
default_language_name nvarchar(128) 指示包含数据库的默认语言。
对于非包含数据库,此值为 NULL。

适用于:SQL Server 2012 (11.x) 及更高版本和 Azure SQL 数据库
default_fulltext_language_lcid int 指示包含的数据库的默认全文语言的本地 ID (lcid)。

注意: 作为默认 的“配置默认全文语言”(服务器配置选项)sp_configure函数。 对于非包含数据库,此值为 NULL。

适用于:SQL Server 2012 (11.x) 及更高版本和 Azure SQL 数据库
default_fulltext_language_name nvarchar(128) 指示包含数据库的默认全文语言。
对于非包含数据库,此值为 NULL。

适用于:SQL Server 2012 (11.x) 及更高版本和 Azure SQL 数据库
is_nested_triggers_on bit 指示包含数据库中是否允许使用嵌套触发器。
0 = 不允许使用嵌套触发器
1 = 允许使用嵌套触发器

注意: 用作 配置嵌套触发器(服务器配置选项)sp_configure函数。 对于非包含数据库,此值为 NULL。 有关详细信息,请参阅 sys.configurations (Transact-SQL)

适用于:SQL Server 2012 (11.x) 及更高版本和 Azure SQL 数据库
is_transform_noise_words_on bit 指示是否应在包含数据库中转换干扰词。
0 = 不应转换干扰词。
1 = 应转换干扰词。

注意:用作转换干扰词服务器配置选项sp_configure。 对于非包含数据库,此值为 NULL。 有关详细信息,请参阅 sys.configurations (Transact-SQL)

适用于:SQL Server 2012 (11.x) 及更高版本
two_digit_year_cutoff smallint 指示 1753 到 9999 之间的数字值,以表示将两位数的年份解释为四位数的年份的截止年份。

注意: 用作配置 两位数年份截止(服务器配置选项)sp_configure函数。 对于非包含数据库,此值为 NULL。 有关详细信息,请参阅 sys.configurations (Transact-SQL)

适用于:SQL Server 2012 (11.x) 及更高版本和 Azure SQL 数据库
containment tinyint(非 NULL) 指示数据库的包含状态。
0 = 数据库包含状态为 OFF。 适用于:SQL Server 2012 (11.x) 及更高版本和 Azure SQL 数据库
1 = 数据库处于部分包含状态 适用于:SQL Server 2012 (11.x) 及更高版本
containment_desc nvarchar(60)(非 NULL) 指示数据库的包含状态。
NONE = 早期数据库(零包含)
PARTIAL = 部分包含的数据库

适用于:SQL Server 2012 (11.x) 及更高版本和 Azure SQL 数据库
target_recovery_time_in_seconds int 恢复数据库的估计时间(秒)。 可以为 NULL。

适用于:SQL Server 2012 (11.x) 及更高版本和 Azure SQL 数据库
delayed_durability int 延迟持续性设置:
0 = DISABLED
1 = ALLOWED
2 = FORCED
有关详细信息,请参阅控制事务持续性

适用于:SQL Server 2014 (12.x) 及更高版本和 Azure SQL 数据库。
delayed_durability_desc nvarchar(60) 延迟持续性设置:
DISABLED
ALLOWED
FORCED

适用于:SQL Server 2014 (12.x) 及更高版本和 Azure SQL 数据库。
is_memory_optimized_elevate_to_snapshot_on bit 在会话设置 TRANSACTION ISOLATION LEVEL 设置为较低的隔离级别、READ COMMITTED 或 READ UNCOMMITTED 时,使用 SNAPSHOT 隔离访问内存优化表。
1 = 最低隔离级别为 SNAPSHOT。
0 = 隔离级别未进行提升。
is_federation_member bit 指示该数据库是否为联合的成员。

适用于:Azure SQL 数据库
is_remote_data_archive_enabled bit 指示数据库是否可拉伸。
0 = 数据库未启用拉伸。
1 = 数据库已启用拉伸。

适用于:SQL Server 2016 (13.x) 及更高版本
有关详细信息,请参阅 Stretch Database
is_mixed_page_allocation_on bit 指示数据库中的表和索引是否可以从混合分片分配初始页。
0 = 数据库中的表和索引始终可以从单一分片分配初始页。
1 = 数据库中的表和索引可以从混合分片分配初始页。
有关详细信息,请参阅 ALTER DATABASE SET Options (Transact-SQL)SET MIXED_PAGE_ALLOCATION 选项。

适用于:SQL Server 2016 (13.x) 及更高版本
is_temporal_history_retention_enabled bit 指示是否启用临时保留策略清理任务。

1 = 已启用临时保留
0 = 已禁用临时保留

适用于:SQL Server 2017 (14.x) 及更高版本和 Azure SQL 数据库
catalog_collation_type int 目录排序规则设置:
0 = DATABASE_DEFAULT
2 = SQL_Latin_1_General_CP1_CI_AS

适用于:Azure SQL 数据库
catalog_collation_type_desc nvarchar(60) 目录排序规则设置:
COLLATE
SQL_Latin_1_General_CP1_CI_AS

适用于:Azure SQL 数据库
physical_database_name nvarchar(128) 对于 SQL Server,数据库的物理名称。 对于Azure SQL 数据库,与用户数据库对应的当前物理数据库的唯一标识符。 更改数据库服务级别目标或还原数据库将导致此值更改。

适用于:SQL Server 2019 (15.x) 及更高版本和 Azure SQL 数据库
is_result_set_caching_on bit 指示是否启用结果集缓存。
1 = 已启用结果集缓存
0 = 已禁用结果集缓存

适用于:Azure Synapse Analytics Gen2。 虽然此功能正在推广到所有区域,但请检查部署到实例的版本以及最新的 Azure Synapse 发行说明Gen2 升级计划以了解功能可用性。
is_accelerated_database_recovery_on bit 指明是否启用了加速数据库恢复 (ADR)。
1 = 已启用 ADR
0 = 已禁用 ADR

适用于:SQL Server 2019 (15.x) 及更高版本和 Azure SQL 数据库
is_tempdb_spill_to_remote_store bit 指示是否启用 tempdb 溢出到远程存储。
1 = 已启用
0 = 已禁用

适用于:Azure Synapse Analytics Gen2。 虽然此功能正在推广到所有区域,但请检查部署到实例的版本以及最新的 Azure Synapse 发行说明Gen2 升级计划以了解功能可用性。
is_stale_page_detection_on bit 指示是否启用过时页面检测。
1 = 已启用过时页面检测
0 = 已禁用过时页面检测

适用于:Azure Synapse Analytics Gen2。 虽然此功能正在推广到所有区域,但请检查部署到实例的版本以及最新的 Azure Synapse 发行说明Gen2 升级计划以了解功能可用性。
is_memory_optimized_enabled bit 指示是否为数据库启用了某些内存中功能,例如 混合缓冲池。 不反映内存中 OLTP 概述和使用情况方案的可用性或配置状态
1 = 已启用内存优化功能
0 = 已禁用内存优化功能

适用于:SQL Server 2019 (15.x) 及更高版本和 Azure SQL 数据库
is_data_retention_on bit 指示是否为 Azure Edge 数据库启用数据保留

适用于: Azure SQL Edge
is_ledger_on bit 指示账本数据库,其中所有用户表都是账本表(所有客户数据库都是防篡改的)。

适用于:SQL Server 2022(16.x)及更高版本,以及Azure SQL 数据库
is_change_feed_enabled bit 指示当前数据库是否为 Azure Synapse Link for SQLFabric 镜像数据库启用。

适用于:SQL Server 2022(16.x)及更高版本,以及Azure SQL 数据库

权限

如果 sys.databases 的调用方不是数据库的所有者,并且数据库不是 mastertempdb,则查看对应行所需的最低权限为 ALTER ANY DATABASEVIEW ANY DATABASE 服务器级权限,或者为 master 数据库中的 CREATE DATABASE 权限。 始终可在 sys.databases 中查看调用方连接的数据库。

重要

默认情况下,公共角色具有 VIEW ANY DATABASE 权限,允许所有登录名查看数据库信息。 要阻止登录名检测数据库,请 REVOKEpublic 中的 VIEW ANY DATABASE 权限或 DENY 单个登录名的 VIEW ANY DATABASE 权限。

注解

在 Azure SQL 数据库中,此视图在 master 数据库或用户数据库中均可用。 在 master 数据库中,此视图将返回与 master 数据库和服务器上的所有用户数据库有关的信息。 在用户数据库中,此视图将仅返回与当前数据库和 master 数据库有关的信息。

由于可能的元数据同步, sys.databases 视图可能会提供有关数据库加密的错误信息。 为了确保准确的结果,建议使用 sys.dm_database_encryption_keys 视图来获取实际加密状态。

使用正在其中创建新数据库的 Azure SQL Database 服务器的 master 数据库中的 sys.databases 视图。 数据库复制开始后,你可以查询目标服务器上 master 数据库的 sys.databasessys.dm_database_copies 视图,检索与复制进度有关的详细信息。

示例

A. 查询 sys.databases 视图

下面的示例返回 sys.databases 视图中提供的一些列。

SELECT name, user_access_desc, is_read_only, state_desc, recovery_model_desc
FROM sys.databases;

B. 检查 SQL 数据库中的复制状态

下面的示例查询 sys.databases 视图和 sys.dm_database_copies 视图,以返回有关数据库复制操作的信息。

适用于:Azure SQL 数据库

-- Execute from the master database.
SELECT a.name, a.state_desc, b.start_date, b.modify_date, b.percent_complete
FROM sys.databases AS a
INNER JOIN sys.dm_database_copies AS b ON a.database_id = b.database_id
WHERE a.state = 7;

C. 检查 SQL 数据库中的时态保留策略状态

以下示例查询 sys.databases 是否启用时态保留清理任务的信息。 执行还原操作后,时态保留默认处于禁用状态。 使用 ALTER DATABASE 显式启用它。

适用于: Azure SQL 数据库

-- Execute from the master database.
SELECT a.name, a.is_temporal_history_retention_enabled
FROM sys.databases AS a;