sys.databases (Transact-SQL)

对于 Microsoft SQL Server 实例或 Windows Azure SQL Database 服务器中的每个数据库,都对应包含一行。

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

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

列名

数据类型

说明

name

sysname

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

database_id

int

数据库的 ID,在 SQL Server 实例中或在 Windows 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 和 Windows Azure SQL Database

100

SQL Server 2008 到 SQL Server 2012 和 Windows Azure SQL Database

110

SQL Server 2012

Null

SQL Server 2008 到 SQL Server 2012 和 Windows Azure SQL Database

NULL = 数据库没有联机,或 AUTO_CLOSE 设置为 ON 且数据库已关闭。

collation_name

sysname

数据库的排序规则。 作为数据库中的默认排序规则。

NULL = 数据库没有联机,或 AUTO_CLOSE 设置为 ON 且数据库已关闭。

user_access

tinyint

用户访问设置:

0 = 已指定 MULTI_USER

1 = 已指定 SINGLE_USER

2 = 已指定 RESTRICTED_USER

user_access_desc

nvarchar(60)

用户访问设置的说明:

MULTI_USER

SINGLE_USER

RESTRICTED_USER

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

3 = RECOVERY_PENDING

4 = SUSPECT

5 = EMERGENCY

6 = OFFLINE

7 = COPYING(适用于 Windows Azure SQL Database)

Windows Azure SQL Database 返回状态 0、1、4 和 7。

注意注意

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

有关详细信息,请参阅数据库状态

state_desc

nvarchar(60)

数据库状态的说明:

  • ONLINE

  • RESTORING

  • RECOVERING

  • RECOVERY_PENDING

  • SUSPECT

    对于 SQL Database,SUSPECT = 复制进程已失败。

  • EMERGENCY

  • OFFLINE

  • COPYING

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 选项所设置:

  • OFF

  • ON

  • IN_TRANSITION_TO_ON

  • IN_TRANSITION_TO_OFF

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)

选定的恢复模式的说明:

  • FULL

  • BULK_LOGGED

  • SIMPLE

page_verify_option

tinyint

PAGE_VERIFY 选项的设置:

0 = 无

1 = TORN_PAGE_DETECTION

2 = CHECKSUM

page_verify_option_desc

nvarchar(60)

PAGE_VERIFY 选项设置的说明:

NONE

TORN_PAGE_DETECTION

CHECKSUM

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 = 检查点

2 = 日志备份

3 = 活动备份或还原

4 = 活动事务

5 = 数据库镜像

6 = 复制

7 = 数据库快照创建

8 = 日志扫描

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

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

10 = 仅供内部使用

11 = 仅供内部使用

12 = 仅供内部使用

13 = 最早的页面

适用于:SQL Server 2012 到 SQL Server 2012。

14 = 其他(暂时)

适用于:SQL Server 2012 到 SQL Server 2012。

log_reuse_wait_desc

nvarchar(60)

事务日志空间重用操作当前正在等待下列各项之一的说明:

  • NOTHING

  • CHECKPOINT

  • LOG_BACKUP

    注意注意

    如果原因是 LOG_BACKUP,则会使用两个备份来实际释放空间。

  • ACTIVE_BACKUP_OR_RESTORE

  • ACTIVE_TRANSACTION

  • DATABASE_MIRRORING

  • REPLICATION

  • DATABASE_SNAPSHOT_CREATION

  • LOG_SCAN

  • AVAILABILITY_REPLICA

    注意注意

    要确定哪个辅助数据库正在延误日志截断,请参阅 sys.dm_hadr_database_replica_states 动态管理视图的 truncation_lsn 列。

  • 仅供内部使用

  • 仅供内部使用

  • 仅供内部使用

  • OLDEST_PAGE

  • OTHER_TRANSIENT

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 2012 和 SQL Database。

group_database_id

uniqueidentifier

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

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

适用于:SQL Server 2012 到 SQL Server 2012 和 SQL Database。

default_language_lcid

smallint

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

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

适用于:SQL Server 2012 到 SQL Server 2012 和 SQL Database。

default_language_name

nvarchar(128)

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

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

default_fulltext_language_lcid

int

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

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

适用于:SQL Server 2012 到 SQL Server 2012 和 SQL Database。

default_fulltext_language_name

nvarchar(128)

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

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

适用于:SQL Server 2012 到 SQL Server 2012 和 SQL Database。

is_nested_triggers_on

bit

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

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

1 = 允许使用嵌套的触发器

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

适用于:SQL Server 2012 到 SQL Server 2012 和 SQL Database。

is_transform_noise_words_on

bit

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

0 = 不应转换干扰词。

1 = 应转换干扰词。

适用于:SQL Server 2012 到 SQL Server 2012。

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

two_digit_year_cutoff

smallint

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

适用于:SQL Server 2012 到 SQL Server 2012 和 SQL Database。

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

containment

tinyint not null

指示数据库的包含状态。

0 = 数据库包含状态为 OFF

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

适用于:SQL Server 2012 到 SQL Server 2012 和 SQL Database。

containment_desc

nvarchar(60) not null

指示数据库的包含状态。

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

PARTIAL = 部分包含的数据库

适用于:SQL Server 2012 到 SQL Server 2012 和 SQL Database。

target_recovery_time_in_seconds

int

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

适用于:SQL Server 2012 到 SQL Server 2012。

is_federation_member

bit

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

适用范围:Windows Azure SQL Database

权限

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

Windows Azure SQL Database备注

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

在要创建新数据库的 Windows Azure SQL Database服务器的 master 数据库上使用 sys.databases 视图。 启动数据库复制后,您可以从目标服务器的 master 数据库中查询 sys.databases 视图和 sys.dm_database_copies 视图,以检索有关复制进度的详细信息。

示例

A.查询 sys.databases 视图

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

适用于:SQL Server 2008 到 SQL Server 2012 和 Windows Azure SQL Database。

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

B.检查 Windows Azure SQL Database中的复制状态

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

适用范围:Windows 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