sys.databases (Transact-SQL)

适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics 分析平台系统 (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。
create_date datetime 数据库的创建或重命名日期。 对于 tempdb,该值在每次重新启动服务器时都会发生更改。 重命名create_date操作在Azure SQL 数据库上执行时不会更改。
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 is ON
0 = AUTO_CLOSE 为 OFF
is_auto_shrink_on bit 1 = AUTO_SHRINK is 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 列。
1 适用于:SQL Server 2008(10.0.x)及更高版本,以及Azure SQL 数据库
2 适用于:Azure SQL 数据库活动异地复制
state_desc nvarchar(60) 数据库状态的说明。 请参阅 state
is_in_standby bit 对于还原日志而言,数据库是只读的。
is_cleanly_shutdown bit 1 = 数据库完全关闭;启动时不需要恢复
0 = 数据库未完全关闭;启动时需要恢复
is_supplemental_logging_enabled bit 1 = SUPPLEMENTAL_LOGGING is 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 is 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 is ON
0 = AUTO_UPDATE_STATISTICS 为 OFF
is_auto_update_stats_async_on bit 1 = AUTO_UPDATE_STATISTICS_ASYNC is ON
0 = AUTO_UPDATE_STATISTICS_ASYNC 为 OFF
is_ansi_null_default_on bit 1 = ANSI_NULL_DEFAULT is ON
0 = ANSI_NULL_DEFAULT 为 OFF
is_ansi_nulls_on bit 1 = ANSI_NULLS is ON
0 = ANSI_NULLS 为 OFF
is_ansi_padding_on bit 1 = ANSI_PADDING is ON
0 = ANSI_PADDING 为 OFF
is_ansi_warnings_on bit 1 = ANSI_WARNINGS is ON
0 = ANSI_WARNINGS 为 OFF
is_arithabort_on bit 1 = ARITHABORT is ON
0 = ARITHABORT 为 OFF
is_concat_null_yields_null_on bit 1 = CONCAT_NULL_YIELDS_NULL is ON
0 = CONCAT_NULL_YIELDS_NULL 为 OFF
is_numeric_roundabort_on bit 1 = NUMERIC_ROUNDABORT is ON
0 = NUMERIC_ROUNDABORT 为 OFF
is_quoted_identifier_on bit 1 = QUOTED_IDENTIFIER is ON
0 = QUOTED_IDENTIFIER 为 OFF
is_recursive_triggers_on bit 1 = RECURSIVE_TRIGGERS is ON
0 = RECURSIVE_TRIGGERS 为 OFF
is_cursor_close_on_commit_on bit 1 = CURSOR_CLOSE_ON_COMMIT is 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 = Nothing
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) 及更高版本
3 适用于:SQL 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
REPLICATION
DATABASE_SNAPSHOT_CREATION
LOG_SCAN
AVAILABILITY_REPLICA
OLDEST_PAGE
XTP_CHECKPOINT
SLOG_SCAN
is_date_correlation_on bit 1 = DATE_CORRELATION_OPTIMIZATION is 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 = Encrypted
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 = 数据库包含已关闭。 适用于: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 = 数据库未启用 Stretch 功能。
1 = 数据库已启用 Stretch-enabled。

适用于: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。
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 数据库
is_vorder_enabled bit 指示是否 为每个仓库启用 V 订单

仅适用于:Microsoft Fabric。

权限

如果 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;