分享方式:


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 Database,DATABASEPROPERTYEX 需要目前資料庫的名稱。 如果指定了不同的資料庫名稱,它會對所有屬性傳回 NULL。

property
指定要傳回之資料庫屬性名稱的運算式。 property 具有 varchar(128) 資料類型,並支援此資料表中的其中一個值:

注意

如果資料庫尚未啟動,且 DATABASEPROPERTYEX 將透過直接資料庫存取來擷取那些值,而不是從中繼資料擷取,則呼叫 DATABASEPROPERTYEX 將傳回 NULL。 AUTO_CLOSE 設定為 ON 或已離線的資料庫會定義為「未啟動」。

屬性 描述 傳回的值
定序 資料庫的預設定序名稱。 定序名稱

NNULL:資料庫未啟動。

基底資料型別:nvarchar(128)
ComparisonStyle Windows 的定序比較樣式。 使用下列樣式值來為完成的 ComparisonStyle 值建置點陣圖:

忽略大小寫:1
忽略腔調字:2
忽略假名:65536
忽略寬度:131072

例如,預設值 196609 是合併「忽略大小寫」、「忽略假名」和「忽略寬度」等選項的結果。
傳回比較樣式。

所有的二進位定序皆傳回 0。

基底資料類型:int
版本 資料庫版本或服務層。 適用於:Azure SQL Database、Azure Synapse Analytics。



一般用途

業務關鍵

基本

Standard

Premium

系統 (適用於 master 資料庫)

NNULL:資料庫未啟動。

基底資料型別:nvarchar(64)
IsAnsiNullDefault 資料庫遵照允許 Null 值的 ISO 規則。 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 Database Engine 偵測到因為斷電或其他系統故障所造成的未完成 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 指出資料庫是否支援記憶體內部 OLTP。 例如,建立和使用經記憶體最佳化的資料表與原生編譯的模組。

專屬於 SQL Server:

IsXTPSupported 是獨立於任何建立記憶體內部 OLTP 物件所必須之 MEMORY_OPTIMIZED_DATA 檔案群組的存在之外。
適用於:SQL Server (SQL Server 2016 (13.x) 和更新版本) 及 Azure SQL Database。

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 Database。

日期時間值

NULL:輸入無效

基底資料型別:datetime
LCID Windows 的定序地區設定識別碼 (LCID)。 LCID 值 (十進位格式)。

基底資料類型:int
MaxSizeInBytes 資料庫的大小上限 (以位元組為單位)。 適用於:Azure SQL Database、Azure Synapse Analytics。

Azure SQL Database 與 Azure Synapse Analytics - 值會以 SLO 為基礎,除非已購買額外的儲存體。

vCore - 值會以 1GB 為單位遞增,直到大小上限為止。

NNULL:資料庫未啟動

基底資料型別:bigint
復原 資料庫復原模式 FULL:完整復原模式

BULK_LOGGED:大量記錄模式

SIMPLE:簡單復原模式

基底資料型別:nvarchar(128)
ServiceObjective 描述 SQL Database 或 Azure Synapse Analytics 中資料庫的效能等級。 下列其中一個值:

Null:資料庫尚未啟動

共用 (適用於 Web/Business 版本)

基本

S0

S1

S2

S3

P1

P2

P3

ElasticPool

系統 (適用於 master 資料庫)

基底資料型別:nvarchar(32)
ServiceObjectiveId SQL Database 中服務目標的識別碼。 識別服務目標的 uniqueidentifier
SQLSortOrder 舊版 SQL Server 中所支援的 SQL Server 排序順序識別碼。 0:資料庫使用 Windows 定序

>0:SQL Server 排列順序識別碼

NULL:無效輸入,或資料庫尚未啟動

基底資料型別:tinyint
狀態 資料庫狀態。 ONLINE:資料庫可用於查詢。

注意:當資料庫開啟且尚未復原時,函數可能會傳回 ONLINE 狀態。 若要識別 ONLINE 資料庫是否可接受連線,請查詢 DATABASEPROPERTYEX 的 Collation 屬性。 當 ONLINE 資料庫定序傳回非 Null 值時,表示該資料庫可接受連線。 對於 AlwaysOn 資料庫,可查詢 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) 或系統管理員使用者

RESTRICTED_USER:只有 db_owner、資料庫建立者 (dbcreator) 或系統管理員角色的成員

MULTI_USER:所有使用者

基底資料型別:nvarchar(128)
版本 建立資料庫時所使用 SQL Server 程式碼的內部版本號碼。 僅供參考之用。 不支援。 我們無法保證未來的相容性。 版本號碼:資料庫是開啟的。

NNULL:資料庫尚未啟動。

基底資料類型:int
ReplicaID 連接的超大規模資料庫/複本的複本標識碼。 適用於:Azure SQL Database。

它只會傳回已連線超大規模資料庫/複本的複本標識碼。 若要深入瞭解複本類型,請參閱 超大規模次要複本

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 Database 讀取向外延展的功能時,您可以透過在資料庫的內容中執行下列查詢,來確認是否已連線到唯讀複本。 當您連線到唯讀複本時,其將傳回 READ_ONLY。 如此一來,您也可以識別查詢在唯讀複本上的執行時機。

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

另請參閱

ALTER DATABASE (Transact-SQL)
資料庫狀態
sys.databases (Transact-SQL)
sys.database_files (Transact-SQL)
SERVERPROPERTY (Transact-SQL)