DATABASEPROPERTYEX (Transact-SQL)

Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

For a specified database in SQL Server, this function returns the current setting of the specified database option or property.

Transact-SQL syntax conventions

Syntax

DATABASEPROPERTYEX ( database , property )  

Note

To view Transact-SQL syntax for SQL Server 2014 (12.x) and earlier versions, see Previous versions documentation.

Arguments

database
An expression specifying the name of the database for which DATABASEPROPERTYEX will return the named property information. database has an nvarchar(128) data type.

For SQL Database, DATABASEPROPERTYEX requires the name of the current database. It returns NULL for all properties if given a different database name.

property
An expression specifying the name of the database property to return. property has a varchar(128) data type, and supports one of the values in this table:

Note

If the database hasn't yet started, calls to DATABASEPROPERTYEX will return NULL if DATABASEPROPERTYEX retrieves those values by direct database access, instead of retrieval from metadata. A database with AUTO_CLOSE set to ON, or otherwise offline, is defined as 'not started.'

Property Description Value returned
Collation Default collation name for the database. Collation name

NULL: Database isn't started.

Base data type: nvarchar(128)
ComparisonStyle The Windows comparison style of the collation. Use the following style values to build a bitmap for the finished ComparisonStyle value:

Ignore case: 1
Ignore accent: 2
Ignore kana: 65536
Ignore width: 131072

For example, the default of 196609 is the result of combining the ignore case, ignore kana, and ignore width options.
Returns the comparison style.

Returns 0 for all binary collations.

Base data type: int
Edition The database edition or service tier. Applies to: Azure SQL Database, Azure Synapse Analytics.



General Purpose

Business Critical

Basic

Standard

Premium

System (for master database)

NULL: Database isn't started.

Base data type: nvarchar(64)
IsAnsiNullDefault Database follows ISO rules for allowing null values. 1: TRUE

0: FALSE

NULL: Invalid input

Base data type: int
IsAnsiNullsEnabled All comparisons to a null evaluate to unknown. 1: TRUE

0: FALSE

NULL: Invalid input

Base data type: int
IsAnsiPaddingEnabled Strings are padded to the same length before comparison or insert. 1: TRUE

0: FALSE

NULL: Invalid input

Base data type: int
IsAnsiWarningsEnabled SQL Server issues error or warning messages when standard error conditions occur. 1: TRUE

0: FALSE

NULL: Invalid input

Base data type: int
IsArithmeticAbortEnabled Queries end when an overflow or divide-by-zero error occurs during query execution. 1: TRUE

0: FALSE

NULL: Invalid input

Base data type: int
IsAutoClose Database shuts down cleanly and frees resources after the last user exits. 1: TRUE

0: FALSE

NULL: Invalid input

Base data type: int
IsAutoCreateStatistics Query optimizer creates single-column statistics, as required, to improve query performance. 1: TRUE

0: FALSE

NULL: Invalid input

Base data type: int
IsAutoCreateStatisticsIncremental Auto-created single column statistics are incremental when possible. Applies to: SQL Server 2014 (12.x) and later.

1: TRUE

0: FALSE

NULL: Invalid input

Base data type: int
IsAutoShrink Database files are candidates for automatic periodic shrinking. 1: TRUE

0: FALSE

NULL: Invalid input

Base data type: int
IsAutoUpdateStatistics When a query uses potentially out-of-date existing statistics, the query optimizer updates those statistics. 1: TRUE

0: FALSE

NULL: Input not valid

Base data type: int
IsClone Database is a schema- and statistics-only copy of a user database created with DBCC CLONEDATABASE. See Microsoft Support Article for more information. Applies to: SQL Server 2014 (12.x) SP2 and later.

1: TRUE

0: FALSE

NULL: Invalid input

Base data type: int
IsCloseCursorsOnCommitEnabled When a transaction commits, all open cursors will close. 1: TRUE

0: FALSE

NULL: Invalid input

Base data type: int
IsDatabaseSuspendedForSnapshotBackup Database is suspended. 1: TRUE

0: FALSE

NULL: Invalid input

Base data type: int
IsFulltextEnabled Database is enabled for full-text and semantic indexing. Applies to: SQL Server 2008 (10.0.x) and later.



1: TRUE

0: FALSE

NULL: Input not valid

Base data type: int

Note: The value of this property now has no effect. User databases are always enabled for full-text search. A future release of SQL Server will remove this property. Do not use this property in new development work, and modify applications that currently use this property as soon as possible.
IsInStandBy Database is online as read-only, with restore log allowed. 1: TRUE

0: FALSE

NULL: Invalid input

Base data type: int
IsLocalCursorsDefault Cursor declarations default to LOCAL. 1: TRUE

0: FALSE

NULL: Invalid input

Base data type: int
IsMemoryOptimizedElevateToSnapshotEnabled Memory-optimized tables are accessed using SNAPSHOT isolation, when the session setting TRANSACTION ISOLATION LEVEL is set to READ COMMITTED, READ UNCOMMITTED, or a lower isolation level. Applies to: SQL Server 2014 (12.x) and later.



1: TRUE

0: FALSE

Base data type: int
IsMergePublished SQL Server supports database table publication for merge replication, if replication is installed. 1: TRUE

0: FALSE

NULL: Invalid input

Base data type: int
IsNullConcat Null concatenation operand yields NULL. 1: TRUE

0: FALSE

NULL: Invalid input

Base data type: int
IsNumericRoundAbortEnabled Errors are generated when a loss of precision occurs in expressions. 1: TRUE

0: FALSE

NULL: Invalid input

Base data type: int
IsParameterizationForced PARAMETERIZATION database SET option is FORCED. 1: TRUE

0: FALSE

NULL: Invalid input
IsQuotedIdentifiersEnabled Double quotation marks on identifiers are allowed. 1: TRUE

0: FALSE

NULL: Invalid input

Base data type: int
IsPublished If replication is installed, SQL Server supports database table publication for snapshot or transactional replication. 1: TRUE

0: FALSE

NULL: Invalid input

Base data type: int
IsRecursiveTriggersEnabled Recursive firing of triggers is enabled. 1: TRUE

0: FALSE

NULL: Invalid input

Base data type: int
IsSubscribed Database is subscribed to a publication. 1: TRUE

0: FALSE

NULL: Invalid input

Base data type: int
IsSyncWithBackup The database is either a published database or a distribution database, and it supports a restore that will not disrupt transactional replication. 1: TRUE

0: FALSE

NULL: Invalid input

Base data type: int
IsTornPageDetectionEnabled The SQL Server Database Engine detects incomplete I/O operations caused by power failures or other system outages. 1: TRUE

0: FALSE

NULL: Invalid input

Base data type: int
IsVerifiedClone Database is a schema- and statistics- only copy of a user database, created using the WITH VERIFY_CLONEDB option of DBCC CLONEDATABASE. See this Microsoft Support Article for more information. Applies to: Starting with SQL Server 2016 (13.x) SP2.



1: TRUE

0: FALSE

NULL: Invalid input

Base data type: int
IsXTPSupported Indicates whether the database supports In-Memory OLTP. For example, creation and use of memory-optimized tables and natively compiled modules.

Specific to SQL Server:

IsXTPSupported is independent of the existence of any MEMORY_OPTIMIZED_DATA filegroup, which is required for creating In-Memory OLTP objects.
Applies to: SQL Server (SQL Server 2016 (13.x) and later), and Azure SQL Database.

1: TRUE

0: FALSE

NULL: Invalid input, an error, or not applicable

Base data type: int
LastGoodCheckDbTime The date and time of the last successful DBCC CHECKDB that ran on the specified database.1 If DBCC CHECKDB hasn't been run on a database, 1900-01-01 00:00:00.000 is returned. Applies to: SQL Server 2016 (13.x) beginning with SP2.
SQL Server 2017 (14.x) beginning with CU9.
SQL Server 2019 (15.x) or later.
Azure SQL Database.

A datetime value

NULL: Invalid input

Base data type: datetime
LCID The collation Windows locale identifier (LCID). LCID value (in decimal format).

Base data type: int
MaxSizeInBytes Maximum database size, in bytes. Applies to: Azure SQL Database, Azure Synapse Analytics.

Azure SQL Database and Azure Synapse Analytics – Value is based on SLO unless additional storage has been purchased.

vCore – Value is in 1GB increments up to max size.

NULL: Database isn't started

Base data type: bigint
Recovery Database recovery model FULL: Full recovery model

BULK_LOGGED: Bulk logged model

SIMPLE: Simple recovery model

Base data type: nvarchar(128)
ServiceObjective Describes the performance level of the database in SQL Database or Azure Synapse Analytics. One of the following values:

Null: database not started

Shared (for Web/Business editions)

Basic

S0

S1

S2

S3

P1

P2

P3

ElasticPool

System (for master DB)

Base data type: nvarchar(32)
ServiceObjectiveId The ID of the service objective in SQL Database. uniqueidentifier that identifies the service objective.
SQLSortOrder SQL Server sort order ID supported in earlier versions of SQL Server. 0: Database uses Windows collation

>0: SQL Server sort order ID

NULL: Invalid input, or database hasn't started

Base data type: tinyint
Status Database status. ONLINE: Database is available for query.

Note: The function may return a status of ONLINE while the database opens and hasn't yet recovered. To identify if an ONLINE database can accept connections, query the Collation property of DATABASEPROPERTYEX. The ONLINE database can accept connections when the database collation returns a non-null value. For Always On databases, query the database_state or database_state_desc columns of sys.dm_hadr_database_replica_states.

OFFLINE: Database was explicitly taken offline.

RESTORING: Database restore has started.

RECOVERING: Database recovery has started and the database isn't yet ready for queries.

SUSPECT: Database didn't recover.

EMERGENCY: Database is in an emergency, read-only state. Access is restricted to sysadmin members

Base data type: nvarchar(128)
Updateability Indicates whether data can be modified. READ_ONLY: Database supports data reads but not data modifications.

READ_WRITE: Database supports data reads and modifications.

Base data type: nvarchar(128)
UserAccess Indicates which users can access the database. SINGLE_USER: Only one db_owner, dbcreator, or sysadmin user at a time

RESTRICTED_USER: Only members of db_owner, dbcreator, or sysadmin roles

MULTI_USER: All users

Base data type: nvarchar(128)
Version Internal version number of the SQL Server code with which the database was created. Identified for informational purposes only. Not supported. Future compatibility is not guaranteed. Version number: Database is open.

NULL: Database hasn't started.

Base data type: int
ReplicaID The replica id of a connected hyperscale database/replica. Applies to: Azure SQL Database.

It will only returns replica id of a connected hyperscale database/replica. To learn more about replica types, see Hyperscale secondary replicas .

NULL: It is not a hyperscale database or the database isn't started.

Base data type: nvarchar(128)

Note

1 For databases that are part of an Availability Group, LastGoodCheckDbTime will return the date and time of the last successful DBCC CHECKDB that ran on the primary replica, regardless of which replica you run the command from.

Return types

sql_variant

Exceptions

Returns NULL on error, or if a caller does not have permission to view the object.

In SQL Server, a user can only view the metadata of securables that the user owns or on which the user has been granted permission. This rule means that metadata-emitting, built-in functions such as OBJECT_ID may return NULL if the user has no permissions on the object. See Metadata Visibility Configuration for more information.

Remarks

DATABASEPROPERTYEX returns only one property setting at a time. To display multiple property settings, use the sys.databases catalog view.

Examples

A. Retrieving the status of the AUTO_SHRINK database option

This example returns the status of the AUTO_SHRINK database option for the AdventureWorks database.

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

Here is the result set. This indicates that AUTO_SHRINK is off.

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

B. Retrieving the default collation for a database

This example returns several attributes of the AdventureWorks database.

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

Here is the result set.

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

C. Use DATABASEPROPERTYEX to verify connection to replica

When using Azure SQL Database read the scale-out feature, you can verify whether you're connected to a read-only replica or not by running the following query in the context of your database. It will return READ_ONLY when you're connected to a read-only replica. This way, you can also identify when a query is running on a read-only replica.

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

See also

ALTER DATABASE (Transact-SQL)
Database States
sys.databases (Transact-SQL)
sys.database_files (Transact-SQL)
SERVERPROPERTY (Transact-SQL)