DATABASEPROPERTYEX (Transact-SQL)

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

对于 SQL Server 中指定的数据库,此函数返回指定数据库选项或属性的当前设置。

Transact-SQL 语法约定

语法

DATABASEPROPERTYEX ( database , property )  

参数

database
一个表达式,用于指定 DATABASEPROPERTYEX 要返回其命名属性信息的数据库的名称。 database 的数据类型为 nvarchar(128)。

对于 SQL 数据库,DATABASEPROPERTYEX 需要当前数据库的名称。 如果提供其他数据库的名称,所有属性都返回为 NULL。

property
一个表达式,用于指定要返回的数据库属性的名称。 property 的数据类型为 varchar(128),并支持下表中的某个值:

注意

如果数据库尚未启动,DATABASEPROPERTYEX 通过直接访问数据库检索这些值(而不是从元数据检索)时,调用 DATABASEPROPERTYEX 会返回 NULL。 AUTO_CLOSE 设置为“开”或脱机的数据库即“未启动”。

properties 说明 返回的值
排序规则 数据库的默认排序规则名称。 排序规则名称

NULL:数据库未启动。

基本数据类型:nvarchar(128)
ComparisonStyle 排序规则的 Windows 比较样式。 使用以下样式值生成已完成 ComparisonStyle 值的位图:

忽略大小写:1
忽略重音:2
忽略假名:65536
忽略宽度:131072

例如,196609 的默认值是将忽略大小写、忽略假名和忽略宽度选项合并在一起的结果。
返回比较样式。

对所有二进制排序规则均返回 0。

基本数据类型:int
版本 数据库版本或服务层。 适用范围:Azure SQL 数据库、Azure Synapse Analytics。



常规用途

业务关键

基本

标准

Premium

系统(针对 master 数据库)

NULL:数据库未启动。

基本数据类型:nvarchar(64)
IsAnsiNullDefault 数据库遵循 ISO 规则,允许 Null 值。 1:TRUE

0:FALSE

NULL:无效输入

基本数据类型:int
IsAnsiNullsEnabled 所有与 Null 的比较将取值为未知。 1:TRUE

0:FALSE

NULL:无效输入

基本数据类型:int
IsAnsiPaddingEnabled 在比较或插入前,字符串将被填充到相同长度。 1:TRUE

0:FALSE

NULL:无效输入

基本数据类型:int
IsAnsiWarningsEnabled 发生标准错误条件时,SQL Server 会发出错误消息或警告消息。 1:TRUE

0:FALSE

NULL:无效输入

基本数据类型:int
IsArithmeticAbortEnabled 如果执行查询时发生溢出或被零除错误,则将结束查询。 1:TRUE

0:FALSE

NULL:无效输入

基本数据类型:int
IsAutoClose 在最后一个用户退出后,数据库完全关闭并释放资源。 1:TRUE

0:FALSE

NULL:无效输入

基本数据类型:int
IsAutoCreateStatistics 查询优化器根据需要创建单列统计信息以提高查询性能。 1:TRUE

0:FALSE

NULL:无效输入

基本数据类型:int
IsAutoCreateStatisticsIncremental 条件允许时,自动创建的单列统计信息递增。 适用于:SQL Server 2014 (12.x) 及更高版本。

1:TRUE

0:FALSE

NULL:无效输入

基本数据类型:int
IsAutoShrink 可以定期自动收缩数据库文件。 1:TRUE

0:FALSE

NULL:无效输入

基本数据类型:int
IsAutoUpdateStatistics 查询使用的现有统计信息可能已过期时,查询优化器更新这些统计信息。 1:TRUE

0:FALSE

NULL:输入无效

基本数据类型:int
IsClone 数据库是使用 DBCC CLONEDATABASE 创建的用户数据库的仅限架构和仅限统计数据副本。 有关详细信息,请参阅 Microsoft 支持文章 适用对象:SQL Server 2014 (12.x) SP2 和更高版本。

1:TRUE

0:FALSE

NULL:无效输入

基本数据类型:int
IsCloseCursorsOnCommitEnabled 提交事务后,会关闭所有打开的游标。 1:TRUE

0:FALSE

NULL:无效输入

基本数据类型:int
IsDatabaseSuspendedForSnapshotBackup 数据库已挂起。 1:TRUE

0:FALSE

NULL:无效输入

基本数据类型:int
IsFulltextEnabled 支持对数据库进行全文和语义索引。 适用于:SQL Server 2008 (10.0.x) 及更高版本。



1:TRUE

0:FALSE

NULL:输入无效

基本数据类型:int

注意: 此属性的值现在无效。 用户数据库始终启用全文搜索。 SQL Server 的后续版本会删除此属性。 请不要在新的开发工作中使用此属性,并尽快修改当前仍在使用此属性的应用程序。
IsInStandBy 数据库以只读方式联机,并允许还原日志。 1:TRUE

0:FALSE

NULL:无效输入

基本数据类型:int
IsLocalCursorsDefault 游标声明默认为 LOCAL。 1:TRUE

0:FALSE

NULL:无效输入

基本数据类型:int
IsMemoryOptimizedElevateToSnapshotEnabled 在会话设置 TRANSACTION ISOLATION LEVEL 设置为 READ COMMITTED、READ UNCOMMITTED 或较低的隔离级别时,使用 SNAPSHOT 隔离访问内存优化表。 适用于:SQL Server 2014 (12.x) 及更高版本。



1:TRUE

0:FALSE

基本数据类型:int
IsMergePublished 如果安装了复制,则 SQL Server 支持发布数据库表供合并复制使用。 1:TRUE

0:FALSE

NULL:无效输入

基本数据类型:int
IsNullConcat Null 串联操作数产生 NULL。 1:TRUE

0:FALSE

NULL:无效输入

基本数据类型:int
IsNumericRoundAbortEnabled 表达式中缺少精度时将产生错误。 1:TRUE

0:FALSE

NULL:无效输入

基本数据类型:int
IsParameterizationForced PARAMETERIZATION 数据库 SET 选项为 FORCED。 1:TRUE

0:FALSE

NULL:无效输入
IsQuotedIdentifiersEnabled 允许对标识符使用英文双引号。 1:TRUE

0:FALSE

NULL:无效输入

基本数据类型:int
IsPublished 如果安装了复制,SQL Server 支持发布数据库表供快照复制或事务复制使用。 1:TRUE

0:FALSE

NULL:无效输入

基本数据类型:int
IsRecursiveTriggersEnabled 已启用触发器递归触发。 1:TRUE

0:FALSE

NULL:无效输入

基本数据类型:int
IsSubscribed 数据库已订阅发布。 1:TRUE

0:FALSE

NULL:无效输入

基本数据类型:int
IsSyncWithBackup 数据库为发布数据库或分发数据库,并且支持在不中断事务复制的情况下还原。 1:TRUE

0:FALSE

NULL:无效输入

基本数据类型:int
IsTornPageDetectionEnabled SQL Server 数据库引擎检测到因电力故障或其他系统故障造成的不完全 I/O 操作。 1:TRUE

0:FALSE

NULL:无效输入

基本数据类型:int
IsVerifiedClone 数据库是使用 DBCC CLONEDATABASE 的 WITH VERIFY_CLONEDB 选项创建的用户数据库的仅限架构和仅限统计信息副本。 有关详细信息,请参阅此 Microsoft 支持文章 适用对象:从 SQL Server 2016 (13.x) SP2 开始。



1:TRUE

0:FALSE

NULL:无效输入

基本数据类型:int
IsXTPSupported 指示数据库是否支持 In-Memory OLTP。 例如,创建和使用内存优化表和本机编译的模块。

特定于 SQL Server:

IsXTPSupported 与任何 MEMORY_OPTIMIZED_DATA 文件组的存在与否无关,创建内存中 OLTP 对象则需要该文件组。
适用于:SQL Server(SQL Server 2016 (13.x) 及更高版本),以及 Azure SQL 数据库。

1:TRUE

0:FALSE

NULL:输入无效,出现错误或不适用

基本数据类型:int
LastGoodCheckDbTime 在指定数据库上运行的上一成功 DBCC CHECKDB 的日期和时间。1 如果 DBCC CHECKDB 未在数据库上运行,则返回 1900-01-01 00:00:00.000。 适用范围:SQL Server 2016 (13.x)(从 SP2 开始)。
SQL Server 2017 (14.x)(从 CU9 开始)。
SQL Server 2019 (15.x) 或更高版本。
Azure SQL 数据库。

日期时间值。

NULL:无效输入

基本数据类型:datetime
LCID 排序规则的 Windows 区域设置标识符 (LCID)。 LCID 值(十进制格式)。

基本数据类型:int
MaxSizeInBytes 最大数据库大小(以字节为单位)。 适用范围:Azure SQL 数据库、Azure Synapse Analytics。

Azure SQL 数据库和 Azure Synapse Analytics - 除非已购买额外的存储空间,否则值基于 SLO。

vCore - 值以 1 GB 为增量递增,直到达到最大大小。

NULL:数据库未启动

基本数据类型:bigint
恢复 数据库恢复模式 FULL:完整恢复模式

BULK_LOGGED:大容量日志模型

SIMPLE:简单恢复模式

基本数据类型:nvarchar(128)
ServiceObjective 描述 SQL 数据库或 Azure Synapse Analytics 中的数据库的性能级别。 以下值之一:

NULL:数据库没有启动

已共享(针对 Web/企业版本)

基本

S0

S1

S2

S3

P1

P2

P3

ElasticPool

系统(针对主数据库)

基本数据类型:nvarchar(32)
ServiceObjectiveId SQL 数据库中的服务目标 ID。 uniqueidentifier 确定服务目标。
SQLSortOrder SQL Server 早期版本中支持的 SQL Server 排序顺序 ID。 0:数据库使用的是 Windows 排序规则

>0:SQL Server 排序顺序 ID

NULL:输入无效或数据库未启动

基本数据类型:tinyint
状态 数据库状态。 ONLINE:数据库可用于查询。

注意:当数据库打开但尚未恢复时,该函数可能返回 ONLINE 状态。 要确定 ONLINE 数据库是否可以接受连接,可以查询 DATABASEPROPERTYEX 的 Collation 属性。 在数据库排序规则返回非 Null 值之后,ONLINE 数据库就可以接受连接了。 对于 Always On 数据库,可以查询 sys.dm_hadr_database_replica_states 的 database_state 或 database_state_desc 列。

OFFLINE:已将数据库显式置于脱机状态。

RESTORING:已启动数据库还原。

RECOVERING:数据库还原已启动且数据库尚未准备好进行查询。

SUSPECT:数据库未恢复。

EMERGENCY:数据库处于紧急只读状态。 只有 sysadmin 成员可进行访问。

基本数据类型:nvarchar(128)
Updateability 指示是否可以修改数据。 READ_ONLY:数据库支持数据读取,但不支持数据修改。

READ_WRITE:数据库支持数据读取和修改。

基本数据类型:nvarchar(128)
UserAccess 指示哪些用户可以访问数据库。 SINGLE_USER:一次仅限一个 db_owner、dbcreator 或 sysadmin 用户

RESTRICTED_USER:仅限 db_owner、dbcreator 或 sysadmin 角色的成员

MULTI_USER:所有用户

基本数据类型:nvarchar(128)
版本 用于创建数据库的 SQL Server 代码的内部版本号。 标识为仅供参考。 不支持。 不保证以后的兼容性。 版本号:数据库处于打开状态。

NULL:数据库未启动。

基本数据类型:int
ReplicaID 已连接的超大规模数据库/副本的副本 ID。 适用于: Azure SQL 数据库。

它将仅返回已连接的超大规模数据库/副本的副本 ID。 若要详细了解副本类型,请参阅超大规模次要副本

NULL:它不是超大规模数据库,或者数据库未启动。

基本数据类型:nvarchar(128)

注意

1 对于属于某可用性组的数据库,LastGoodCheckDbTime 将返回在主要副本上运行的上一成功 DBCC CHECKDB 的日期和时间,而不管从哪个副本运行命令。

返回类型

sql_variant

例外

出现错误时或调用方没有查看对象的权限时将返回 NULL。

在 SQL Server 中,用户只能查看其拥有的安全对象的元数据,或者已对其授予权限的安全对象的元数据。 此规则意味着,如果用户对该对象没有任何权限,那些发出元数据的内置函数(如 OBJECT_ID)可能会返回 NULL。 有关详细信息,请参阅元数据可见性配置

备注

DATABASEPROPERTYEX 一次只返回一个属性设置。 若要显示多个属性设置,请使用 sys.databases 目录视图。

示例

A. 检索 AUTO_SHRINK 数据库选项的状态

以下示例返回 AdventureWorks 数据库的 AUTO_SHRINK 数据库选项的状态。

SELECT DATABASEPROPERTYEX('AdventureWorks2022', 'IsAutoShrink');  

结果集如下。 该结果集指示 AUTO_SHRINK 已关闭。

------------------  
0  

B. 检索数据库的默认排序规则

以下示例返回 AdventureWorks 数据库的多个属性。

SELECT   
    DATABASEPROPERTYEX('AdventureWorks2022', 'Collation') AS Collation,  
    DATABASEPROPERTYEX('AdventureWorks2022', 'Edition') AS Edition,  
    DATABASEPROPERTYEX('AdventureWorks2022', 'ServiceObjective') AS ServiceObjective,  
    DATABASEPROPERTYEX('AdventureWorks2022', 'MaxSizeInBytes') AS MaxSizeInBytes  

结果集如下。

Collation                     Edition        ServiceObjective  MaxSizeInBytes  
----------------------------  -------------  ----------------  --------------  
SQL_Latin1_General_CP1_CI_AS  DataWarehouse  DW1000            5368709120  

°C 使用 DATABASEPROPERTYEX 验证与副本的连接

使用 Azure SQL 数据库读取横向扩展功能时,可通过在数据库上下文中运行以下查询来验证是否已连接到只读副本。 连接到只读副本时,它将返回 READ_ONLY。 通过这种方式,还可确定查询何时在只读副本上运行。

SELECT DATABASEPROPERTYEX(DB_NAME(), 'Updateability'); 

另请参阅

ALTER DATABASE (Transact-SQL)
数据库状态
sys.databases (Transact-SQL)
sys.database_files (Transact-SQL)
SERVERPROPERTY (Transact-SQL)