sys.databases (Transact-SQL)

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

适用范围:SQL Server(SQL Server 2008 至当前版本),Azure SQL Database(初始版本至当前版本)。

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

**与 SQL Database 的 活动的地理复制 相关的列:**is_ready_only、state 和 state_desc。

列名

数据类型

说明

name

sysname

数据库名称,在 SQL Server 实例中或在 Azure SQL Database 服务器中是唯一的。

database_id

int

数据库的 ID,在 SQL Server 实例中或在 Azure SQL Database 服务器中是唯一的。

source_database_id

int

Non-NULL = 该数据库快照的源数据库 ID。

NULL = 非数据库快照。

owner_sid

varbinary(85)

注册到服务器的数据库外部所有者的 SID(安全标识符)。

create_date

datetime

数据库的创建或重命名日期。 对于 tempdb,该值在每次重新启动服务器时都会发生更改。

compatibility_level

tinyint

对应于兼容行为的 SQL Server 版本的整数:

适用范围

70

SQL Server 2008 到SQL Server 2008 R2

80

SQL Server 2008 到SQL Server 2008 R2

90

SQL Server 2008 到SQL Server 2012

100

SQL Server 2008 到 SQL Server 2014 和 Azure SQL Database

110

SQL Server 2012 到SQL Server 2014

120

SQL Server 2014 到SQL Server 2014

NULL

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

SQL Server 2008 到SQL Server 2014

3 = RECOVERY_PENDING

SQL Server 2008 到SQL Server 2014

4 = SUSPECT

5 = EMERGENCY

SQL Server 2008 到SQL Server 2014

6 = OFFLINE

SQL Server 2008 到SQL Server 2014

7 = COPYING

Azure SQL Database

备注

刚刚联机的数据库不一定马上能接受连接。要确定数据库何时可以接受连接,可以查询 sys.databases 的 collation_name 列或 DATABASEPROPERTYEX 的 Collation 属性。在数据库排序规则返回非 Null 值之后,数据库就可以接受连接了。对于 AlwaysOn 数据库,可以查询 sys.dm_hadr_database_replica_states 的 database_state 或 database_state_desc 列。

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_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_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 列指示检查点或 xtp_checkpoint)。

SQL Server 2008 到SQL Server 2014

2 = 日志备份

SQL Server 2008 到SQL Server 2014

3 = 活动备份或还原

SQL Server 2008 到SQL Server 2014

4 = 活动事务

SQL Server 2008 到SQL Server 2014

5 = 数据库镜像

SQL Server 2008 到SQL Server 2014

6 = 复制

SQL Server 2008 到SQL Server 2014

7 = 数据库快照创建

SQL Server 2008 到SQL Server 2014

8 = 日志扫描

9 = AlwaysOn 可用性组辅助副本正将此数据库的事务日志记录应用到相应的辅助数据库。

SQL Server 2012 到 SQL Server 2014。 在 SQL Server 的早期版本中,9 = 其他(暂时)。

10 = 仅限内部使用

SQL Server 2012 到SQL Server 2014

11 = 仅限内部使用

SQL Server 2012 到SQL Server 2014

12 = 仅限内部使用

SQL Server 2012 到SQL Server 2014

13 = 最早的页面

SQL Server 2012 到SQL Server 2014

14 = 其他

SQL Server 2012 到SQL Server 2014

16 = XTP_CHECKPOINT(当数据库使用恢复模式并且具有内存优化的数据文件组时,应看到 log_reuse_wait 列指示检查点或 xtp_checkpoint)。

SQL Server 2014 到SQL Server 2014

log_reuse_wait_desc

nvarchar(60)

日志空间的重复使用正在等待最后一个检查点的描述。

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 到 SQL Server 2014、Azure SQL Database

group_database_id

uniqueidentifier

数据库在其参与的 AlwaysOn 可用性组(如果有)中的唯一标识符。 在主副本上以及在所有辅助副本上(数据库在这些辅助副本上加入可用性组),该数据库的 group_database_id 都是相同的。

NULL = 数据库不是任何可用性组中的可用性副本的一部分。

适用范围:SQL Server 2012 到 SQL Server 2014、Azure SQL Database

default_language_lcid

smallint

指示包含数据库的默认语言的本地 ID (lcid)。

注意   充当 sp_configure 的配置默认语言服务器配置选项。 对于非包含数据库,此值为 null。

适用范围:SQL Server 2012 到 SQL Server 2014、Azure SQL Database

default_language_name

nvarchar(128)

指示包含数据库的默认语言。

对于非包含数据库,此值为 null。

适用范围:SQL Server 2012 到 SQL Server 2014、Azure SQL Database

default_fulltext_language_lcid

int

指示包含数据库的默认全文语言的本地 ID (lcid)。

注意   充当 sp_configure 的默认配置 default full-text language 服务器配置选项。 对于非包含数据库,此值为 null。

适用范围:SQL Server 2012 到 SQL Server 2014、Azure SQL Database

default_fulltext_language_name

nvarchar(128)

指示包含数据库的默认全文语言。

对于非包含数据库,此值为 null。

适用范围:SQL Server 2012 到 SQL Server 2014、Azure SQL Database

is_nested_triggers_on

bit

指示包含数据库中是否允许使用嵌套触发器。

0 = 不允许使用嵌套触发器

1 = 允许使用嵌套触发器

注意   充当 sp_configure 的 配置 nested triggers 服务器配置选项。 对于非包含数据库,此值为 null。 有关进一步信息,请参阅 sys.configurations (Transact-SQL)

适用范围:SQL Server 2012 到 SQL Server 2014、Azure SQL Database

is_transform_noise_words_on

bit

指示是否应在包含数据库中转换干扰词。

0 = 不应转换干扰词。

1 = 应转换干扰词。

注意   充当 sp_configure 的transform noise words 服务器配置选项。 对于非包含数据库,此值为 null。 有关进一步信息,请参阅 sys.configurations (Transact-SQL)

适用范围:SQL Server 2012 到 SQL Server 2014

two_digit_year_cutoff

smallint

指示 1753 到 9999 之间的数字值,以表示将两位数的年份解释为四位数的年份的截止年份。

注意   充当 sp_configure 的配置两位数年份截止服务器配置选项。 对于非包含数据库,此值为 null。 有关进一步信息,请参阅 sys.configurations (Transact-SQL)

适用范围:SQL Server 2012 到 SQL Server 2014、Azure SQL Database

containment

tinyint not null

指示数据库的包含状态。

适用范围

0 = 数据库包含状态为 OFF。

SQL Server 2012 到 SQL Server 2014、Azure SQL Database

1 = 数据库处于部分包含状态

SQL Server 2012 到SQL Server 2014

containment_desc

nvarchar(60) not null

指示数据库的包含状态。

NONE = 早期数据库(零包含)

PARTIAL = 部分包含的数据库

适用范围:SQL Server 2012 到 SQL Server 2014、Azure SQL Database

target_recovery_time_in_seconds

int

恢复数据库的估计时间(秒)。 可以为 NULL。

适用范围:SQL Server 2012 到 SQL Server 2014、Azure SQL Database

is_federation_member

bit

指示该数据库是否为联合的成员。

适用范围:Azure SQL Database

is_memory_optimized_elevate_to_snapshot_on

bit

适用范围:SQL Server 2014 到 SQL Server 2014。

在会话设置 TRANSACTION ISOLATION LEVEL 设置为较低的隔离级别、READ COMMITTED 或 READ UNCOMMITTED 时,使用 SNAPSHOT 隔离访问内存优化表。

1 = 最低隔离级别为 SNAPSHOT。

0 = 隔离级别未进行提升。

is_auto_create_stats_incremental_on

bit

指示自动统计信息的增量选项的默认设置。

0 = 自动创建统计信息不是增量统计信息

1 = 如果可能,自动创建统计信息是增量统计信息

适用范围:SQL Server 2014 到 SQL Server 2014。

is_query_store_on

bit

仅限内部使用。

适用范围:SQL Server 2014 到 SQL Server 2014。

resource_pool_id

int

映射到此数据库的资源池的 ID。 此资源池控制对该数据库中的内存优化表可用的总内存。

适用范围:SQL Server 2014 到 SQL Server 2014

权限

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

SQL Database 备注

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

在要创建新数据库的 SQL Database 服务器的 master 数据库上使用 sys.databases 视图。 启动数据库复制后,您可以从目标服务器的 master 数据库中查询 sys.databases 视图和 sys.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 Database 中的复制状态

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

适用范围:Azure SQL Database

-- Execute from the master database.
SELECT a.name, a.state_desc, b.start_date, b.modify_date, b.percentage_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;

请参阅

参考

ALTER DATABASE (Transact-SQL)

sys.database_mirroring_witnesses (Transact-SQL)

sys.database_recovery_status (Transact-SQL)

数据库和文件目录视图 (Transact-SQL)

其他资源

sys.dm_database_copies