DATABASEPROPERTYEX (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse Analytics分析平台系统 (PDW)Microsoft Fabric 预览版中的 SQL 数据库

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

Transact-SQL 语法约定

语法

DATABASEPROPERTYEX ( database , property )

参数

数据库

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

对于 SQL 数据库,DATABASEPROPERTYEX 需要当前数据库的名称。 如果给定不同的数据库名称,则返回 NULL 所有属性。

财产

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

注意

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

properties 说明 返回的值
Collation

数据类型: nvarchar(128)
数据库的默认排序规则名称。 排序规则名称。 如果 NULL启动数据库,则不会启动数据库。
ComparisonStyle

数据类型: int
排序规则的 Windows 比较样式。 使用以下样式值为完成 ComparisonStyle 的值生成位图:

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

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

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

数据类型: nvarchar(64)
数据库版本或服务层。 - General Purpose
- Business Critical
- Basic
- Standard
- Premium
- System (对于 master 数据库)
- FabricSQLDB:Microsoft Fabric 预览版中的 SQL 数据库
- NULL:数据库未启动。

适用于:Azure SQL 数据库、Microsoft Fabric 预览版中的 SQL 数据库、Azure Synapse Analytics。
IsAnsiNullDefault

数据类型: int
数据库遵循 ISO 规则来允许 NULL 值。 - 1:真
- 0:假
- NULL:输入无效
IsAnsiNullsEnabled

数据类型: int
计算结果为未知的所有比较 NULL - 1:真
- 0:假
- NULL:输入无效
IsAnsiPaddingEnabled

数据类型: int
在比较或插入前,字符串将被填充到相同长度。 - 1:真
- 0:假
- NULL:输入无效
IsAnsiWarningsEnabled

数据类型: int
发生标准错误条件时,SQL Server 会发出错误消息或警告消息。 - 1:真
- 0:假
- NULL:输入无效
IsArithmeticAbortEnabled

数据类型: int
如果执行查询时发生溢出或被零除错误,则将结束查询。 - 1:真
- 0:假
- NULL:输入无效
IsAutoClose

数据类型: int
在最后一个用户退出后,数据库完全关闭并释放资源。 - 1:真
- 0:假
- NULL:输入无效
IsAutoCreateStatistics

数据类型: int
查询优化器根据需要创建单列统计信息以提高查询性能。 - 1:真
- 0:假
- NULL:输入无效
IsAutoCreateStatisticsIncremental

数据类型: int
条件允许时,自动创建的单列统计信息递增。 - 1:真
- 0:假
- NULL:输入无效

适用于:SQL Server 2014 (12.x) 及更高版本。
IsAutoShrink

数据类型: int
可以定期自动收缩数据库文件。 - 1:真
- 0:假
- NULL:输入无效
IsAutoUpdateStatistics

数据类型: int
查询使用的现有统计信息可能已过期时,查询优化器更新这些统计信息。 - 1:真
- 0:假
- NULL:输入无效
IsClone

数据类型: int
数据库是创建 DBCC CLONEDATABASE的用户数据库的架构和仅统计信息副本。 - 1:真
- 0:假
- NULL:输入无效

适用于:SQL Server 2014 (12.x) SP2 及更高版本。
IsCloseCursorsOnCommitEnabled

数据类型: int
事务提交时,所有打开的游标都会关闭。 - 1:真
- 0:假
- NULL:输入无效
IsDatabaseSuspendedForSnapshotBackup

数据类型: int
数据库已挂起。 - 1:真
- 0:假
- NULL:输入无效
IsFulltextEnabled

数据类型: int
支持对数据库进行全文和语义索引。 - 1:真
- 0:假
- NULL:输入无效

适用于:SQL Server 2008 (10.0.x) 及更高版本。

注意: 此属性的值现在无效。 用户数据库始终启用全文搜索。 SQL Server 的后续版本会删除此属性。 不要在新开发工作中使用此属性,并修改当前尽快使用此属性的应用程序。
IsInStandBy

数据类型: int
数据库以只读方式联机,并允许还原日志。 - 1:真
- 0:假
- NULL:输入无效
IsLocalCursorsDefault

数据类型: int
游标声明默认为 LOCAL. - 1:真
- 0:假
- NULL:输入无效
IsMemoryOptimizedElevateToSnapshotEnabled

数据类型: int
当会话设置SNAPSHOT设置为TRANSACTION ISOLATION LEVELREAD COMMITTED或较低的隔离级别时,将使用READ UNCOMMITTED隔离访问内存优化表。 - 1:真
- 0:假

适用于:SQL Server 2014 (12.x) 及更高版本。
IsMergePublished

数据类型: int
如果安装了复制,则 SQL Server 支持发布数据库表供合并复制使用。 - 1:真
- 0:假
- NULL:输入无效
IsNullConcat

数据类型: int
Null 串联作数生成 NULL - 1:真
- 0:假
- NULL:输入无效
IsNumericRoundAbortEnabled

数据类型: int
表达式中缺少精度时将产生错误。 - 1:真
- 0:假
- NULL:输入无效
IsOptimizedLockingOn

数据类型: int
为数据库启用了优化锁定。 - 1:真
- 0:假
- NULL:不可用

适用于:sql Server 2025 (17.x) 预览版及更高版本、Azure SQL 数据库、Azure SQL 托管实例AUTD 和 Microsoft Fabric 预览版中的 SQL 数据库。
IsParameterizationForced

数据类型: int
PARAMETERIZATION 数据库 SET 选项为 FORCED. - 1:真
- 0:假
- NULL:输入无效
IsQuotedIdentifiersEnabled

数据类型: int
允许对标识符使用英文双引号。 - 1:真
- 0:假
- NULL:输入无效
IsPublished

数据类型: int
如果安装了复制,SQL Server 支持发布数据库表供快照复制或事务复制使用。 - 1:真
- 0:假
- NULL:输入无效
IsRecursiveTriggersEnabled

数据类型: int
已启用触发器递归触发。 - 1:真
- 0:假
- NULL:输入无效
IsSubscribed

数据类型: int
数据库已订阅发布。 - 1:真
- 0:假
- NULL:输入无效
IsSyncWithBackup

数据类型: int
该数据库是已发布的数据库或分发数据库,它支持不会中断事务复制的还原。 - 1:真
- 0:假
- NULL:输入无效
IsTornPageDetectionEnabled

数据类型: int
SQL Server 数据库引擎检测到因电力故障或其他系统故障造成的不完全 I/O 操作。 - 1:真
- 0:假
- NULL:输入无效
IsVerifiedClone

数据类型: int
数据库是使用选项WITH VERIFY_CLONEDB创建DBCC CLONEDATABASE的用户数据库的架构和统计信息副本。 - 1:真
- 0:假
- NULL:输入无效

适用于:SQL Server 2016 (13.x) SP2 及更高版本。
IsXTPSupported

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

特定于 SQL Server:

IsXTPSupported 与创建 In-Memory OLTP 对象所需的任何 MEMORY_OPTIMIZED_DATA 文件组存在无关。
- 1:真
- 0:假
- NULL:输入无效、错误或不适用

适用于:SQL Server 2016(13.x)及更高版本以及 Azure SQL 数据库。
LastGoodCheckDbTime

数据类型:datetime
在指定数据库上运行的最后一次成功的 DBCC CHECKDB 日期和时间。 如果 DBCC CHECKDB 尚未在数据库上运行, 1900-01-01 00:00:00.000 则返回。 对于属于可用性组的数据库, LastGoodCheckDbTime 返回在主副本上运行的最后一次成功的 DBCC CHECKDB 日期和时间,而不考虑从哪个副本运行命令。 NULL:输入无效

适用于:SQL Server 2016 (13.x) SP2、SQL Server 2017 (14.x) CU9、SQL Server 2019 (15.x) 及更高版本、Azure SQL 数据库和 SQL 数据库,Microsoft Fabric 预览版。
LCID

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

数据类型: bigint
最大数据库大小(以字节为单位)。 - Azure SQL 数据库和 Azure Synapse Analytics:除非已购买额外的存储,否则价值基于 SLO。

- vCore:值以 1GB 为增量,最大大小。

- NULL:数据库未启动

适用于:Azure SQL 数据库、Microsoft Fabric 预览版中的 SQL 数据库和 Azure Synapse Analytics。
Recovery

数据类型: nvarchar(128)
数据库恢复模式。 - FULL:完整恢复模式
- BULK_LOGGED:大容量记录模型
- SIMPLE:简单恢复模式
ServiceObjective

数据类型: nvarchar(32)
介绍 SQL 数据库中数据库的性能级别、Microsoft Fabric 预览版中的 SQL 数据库或 Azure Synapse Analytics 中的数据库性能级别。 以下值之一:

- NULL:数据库未启动
- Shared (适用于 Web/商业版)
- Basic
- S0
- S1
- S2
- S3
- P1
- P2
- P3
- ElasticPool
- System (对于 master 数据库)
- FabricSQLDB:Microsoft Fabric 预览版中的 SQL 数据库
ServiceObjectiveId

数据类型: uniqueidentifier
SQL 数据库中的服务目标 ID。 服务目标的 ID。
SQLSortOrder

数据类型: tinyint
SQL Server 早期版本中支持的 SQL Server 排序顺序 ID。 - 0:数据库使用 Windows 排序规则

- >0:SQL Server 排序顺序 ID

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

数据类型: nvarchar(128)
数据库状态。 ONLINE:数据库可用于查询。

注意: 该函数可能会返回数据库打开且尚未恢复的状态 ONLINE 。 若要确定数据库是否可以 ONLINE 接受连接,请查询 CollationDATABASEPROPERTYEX属性。 ONLINE当数据库排序规则返回非 null 值时,数据库可以接受连接。 对于 AlwaysOn 数据库,请查询 database_statedatabase_state_descsys.dm_hadr_database_replica_states

- OFFLINE:数据库已显式脱机。

- RESTORING:数据库还原已启动。

- RECOVERING:数据库恢复已启动,数据库尚未准备好进行查询。

- SUSPECT:数据库未恢复。

- EMERGENCY:数据库处于紧急只读状态。 访问权限仅限于 sysadmin 成员
Updateability

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

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

数据类型: nvarchar(128)
指示哪些用户可以访问数据库。 SINGLE_USER:一次只有一 个db_ownerdbcreatorsysadmin 用户

- RESTRICTED_USER:仅 db_ownerdbcreatorsysadmin 角色的成员

- MULTI_USER:所有用户
Version

数据类型: int
用于创建数据库的 SQL Server 代码的内部版本号。 标识为仅供参考。 不支持。 不保证以后的兼容性。 - 版本号:数据库已打开。

- NULL:数据库尚未启动。
ReplicaID

数据类型: nvarchar(128)
连接的超大规模数据库/副本的副本 ID。 仅返回连接的超大规模数据库/副本的副本 ID。 若要了解有关副本类型的详细信息,请参阅 “超大规模次要副本”。

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

适用于:Azure SQL 数据库超大规模。

返回类型

sql_variant

例外

返回 NULL 错误,或者调用方没有查看对象的权限。

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

备注

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

示例

本文中的代码示例使用 AdventureWorks2022AdventureWorksDW2022 示例数据库,可以从 Microsoft SQL Server 示例和社区项目 主页下载该数据库。

答: 检索AUTO_SHRINK数据库选项的状态

此示例返回数据库的数据库选项AUTO_SHRINK的状态AdventureWorks

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');