設定資料庫選項
您可以為每個資料庫設定一些決定資料庫特性的資料庫選項。這些選項對每個資料庫都是唯一的,並不會影響其他資料庫。在建立資料庫時,這些資料庫選項都將設為預設值,而且可使用 ALTER DATABASE 陳述式的 SET 子句來變更。除此之外,還可使用 SQL Server Management Studio 來設定大部分的選項。
[!附註]
伺服器範圍的設定值是使用 sp_configure 系統預存程序或 SQL Server Management Studio 來設定。如需詳細資訊,請參閱<設定伺服器組態選項>。連線層級的設定可使用 SET 陳述式來指定。如需詳細資訊,請參閱<SET 選項>。
若要為新建立的資料庫變更任何資料庫選項的預設值,請在 model 資料庫中變更適當的資料庫選項。例如,如果您想讓後續建立之任何新資料庫的 AUTO_CLOSE 資料庫選項預設設定都是 True,請將 model 的 AUTO_CLOSE 選項設定為 True。
當您設定在資料庫選項後,檢查點會自動發出,讓修改立即生效。如需詳細資訊,請參閱<CHECKPOINT (Transact-SQL)>。
自動選項
控制某些自動行為。
選項 |
描述 |
預設值 |
---|---|---|
AUTO_CLOSE |
當設定為 ON 時,資料庫會完全關閉,並在最後一個使用者結束之後釋放其資源。當使用者試圖重新使用資料庫時,會自動重新開啟資料庫。 當設定為 OFF 時,則在最後一個使用者結束之後資料庫仍為開啟。 |
不論作業系統為何,使用 SQL Server 2000 Desktop Engine 或 SQL Server Express 時,這個選項對所有資料庫是設為 True;對於所有其他的版本則是設為 False。 |
AUTO_CREATE_STATISTICS |
當設定為 ON 時,統計資料會自動建立在使用述詞的資料行上。 當設為 OFF 時,不會自動建立統計資料;相反地,此時可以手動建立統計資料。 |
True |
AUTO_UPDATE_STATISTICS |
當設定為 ON 時,在最佳化時查詢所需的任何遺漏的統計資料,都會在查詢最佳化時自動建立。 當設定為 OFF 時,則必須手動建立統計資料。如需詳細資訊,請參閱<使用統計資料來改善查詢效能>。 |
True |
AUTO_SHRINK |
若設成 ON,資料庫檔案會被定期縮減。資料檔和記錄檔都可以由 SQL Server 自動壓縮。只有在資料庫設為 SIMPLE 復原模式或備份記錄時,AUTO_SHRINK 才會縮減交易記錄的大小。 當設定為 OFF 時,不會在定期檢查未使用空間時自動縮減資料庫檔案。 |
False |
Auto_Update_Statistics_Asynchronously |
設定為 True 時,就會以非同步方式更新統計資料。 |
False |
資料指標選項
控制資料指標的行為與範圍。
選項 |
描述 |
預設值 |
---|---|---|
CURSOR_CLOSE_ON_COMMIT |
若設定為 ON 時,則在認可或回復交易時,將會關閉任何開啟的資料指標。 當設定為 OFF 時,在認可交易時資料指標仍然是開啟的,但回復交易則會關閉所有資料指標,除了那些定義為 INSENSITIVE 或 STATIC 的資料指標。 |
OFF |
CURSOR_DEFAULT |
當指定 LOCAL,且資料指標並未在建立時定義為 GLOBAL,則資料指標的範圍僅限於資料指標建立時所在之批次、預存程序或觸發程序的本機範圍。資料指標名稱只在這個範圍內有效。 當指定 GLOBAL,且資料指標並未在建立時定義為 LOCAL,則資料指標的範圍便是連接的全域範圍。連接所執行的任何預存程序或批次都可以參考資料指標名稱。 |
GLOBAL |
資料庫可用性選項
控制資料庫是在線上或離線、誰可連接到資料庫、資料庫是否處於唯讀模式。
選項 |
描述 |
預設值 |
---|---|---|
OFFLINE | ONLINE | EMERGENCY |
若您指定 OFFLINE,資料庫將完全關閉與關機,並標為離線。 若您指定 ONLINE,資料庫將會開啟並可供使用。 當指定 EMERGENCY 時,會將資料庫標示為 READ_ONLY、停用記錄並限定只有 sysadmin (系統管理員) 固定伺服器角色的成員才可存取。 |
ONLINE |
READ_ONLY | READ_WRITE |
當指定 READ_ONLY 時,使用者將只能讀取資料庫的資料,而不能修改它。 當指定 READ_WRITE 時,將可對資料庫進行讀取和寫入作業。 |
READ_WRITE |
SINGLE_USER | RESTRICTED_USER | MULTI_USER |
當指定 SINGLE_USER 時,每次只有一個使用者可以連接到資料庫。所有其他的使用者連接都會中斷。 當指定 RESTRICTED_USER 時,只允許 db_owner 固定資料庫角色與 dbcreator (資料庫建立者) 及 sysadmin (系統管理員) 固定伺服器角色的成員連接到資料庫,但它並未限制他們的數目。 當指定 MULTI_USER 時,可讓所有具有適當權限的使用者都連接到允許的資料庫。 |
MULTI_USER |
日期交互關聯最佳化選項
控制 date_correlation_optimization 選項。
選項 |
描述 |
預設值 |
---|---|---|
DATE_CORRELATION_OPTIMIZATION |
當指定 ON 時,SQL Server 會維護資料庫中任兩個資料表之間的交互關聯統計資料,該資料庫是由 FOREIGN KEY 條件約束所連結並具有 datetime 資料行。 當指定 OFF 時,則不會維謢交互關聯統計資料。 |
OFF |
如需詳細資訊,請參閱<將存取相互關聯日期時間資料行的查詢最佳化>。
外部存取選項
控制諸如另一個資料庫的物件等外部資源是否可存取資料庫。
選項 |
描述 |
預設值 |
---|---|---|
DB_CHAINING |
當指定 ON 時,資料庫可以是跨資料庫擁有權鏈結的來源或目標。 當指定 OFF 時,則資料庫無法參與跨資料庫擁有權鏈結。 |
OFF |
TRUSTWORTHY |
當指定 ON 時,使用模擬內容的資料庫模組 (例如,使用者定義函數或預存程序) 可以存取資料庫之外的資源。 當指定 OFF 時,在模擬內容中將無法存取資料庫之外的資源。 每當附加資料庫時,TRUSTWORTHY 都設為 OFF。 |
OFF |
參數化選項
控制參數化選項。
選項 |
描述 |
預設值 |
---|---|---|
PARAMETERIZATION |
當指定 SIMPLE 時,將會根據資料庫的預設行為將查詢參數化 當指定 FORCED 時,SQL Server 會將資料庫中的所有查詢參數化。 |
SIMPLE |
復原選項
控制資料庫的復原模式。
選項 |
描述 |
預設值 |
---|---|---|
RECOVERY |
當指定 FULL 時,將使用交易記錄備份提供媒體失敗後的完整復原模式。如果資料檔損毀,媒體復原可以還原所有已認可的交易。 當指定 BULK_LOGGED 時,媒體失敗後的後原是針對某些提供的大範圍或大量作業,結合最佳效能以及最少的記錄空間用量。 當指定 SIMPLE 時,就會提供簡單的備份策略,即使用最少的記錄空間。 |
FULL |
PAGE_VERIFY |
當指定 CHECKSUM 時,Database Engine會針對整頁的內容計算總和檢查碼,並在將頁面寫入磁碟時,於頁首中儲存值。從磁碟讀取頁面時,會重新計算總和檢查碼,並與頁首所儲存的總和檢查碼值作比較。 如果您指定了 TORN_PAGE_DETECTION,系統會在頁面寫入磁碟時,將 8 KB 的資料庫頁面中的每 512 位元組磁區之特定 2 位元模式儲存至資料庫頁首中。當從磁碟中讀取頁面時,會比較頁面標頭所儲存的損毀位元和實際的頁面磁區資訊。 當指定 NONE 時,資料庫頁面將不會產生 CHECKSUM 或 TORN_PAGE_DETECTION 值。SQL Server 將不會在讀取時驗證總和檢查碼或損毀頁面,即使在頁首中有 CHECKSUM 或 TORN_PAGE_DETECTION 值也是如此。 |
CHECKSUM |
Service Broker 選項
控制 Service Broker 選項。
選項 |
描述 |
預設值 |
---|---|---|
ENABLE_BROKER | DISABLE_BROKER | NEW_BROKER | ERROR_BROKER_CONVERSATIONS |
當指定 ENABLE_BROKER 時,指定資料庫將啟用 Service Broker。 當指定 DISABLE_BROKER 時,指定資料庫將停用 Service Broker。 當指定 NEW_BROKER 時,資料庫將收到新的 Broker 識別碼。 當指定 ERROR_BROKER_CONVERSATIONS,在附加資料庫時,資料庫中的交談將收到錯誤訊息。 |
ENABLE_BROKER |
快照隔離選項
決定交易隔離等級。
選項 |
描述 |
預設值 |
---|---|---|
ALLOW_SNAPSHOT_ISOLATION |
當指定 ON 時,交易可以指定 SNAPSHOT 交易隔離等級。當交易執行的隔離等級是 SNAPSHOT 時,所有陳述式都會見到在交易開頭便存在的資料快照集。 當指定 OFF 時,交易無法指定 SNAPSHOT 交易隔離等級。 |
OFF |
READ_COMMITTED_SNAPSHOT |
當指定 ON 時,指定 READ COMMITTED 隔離等級的交易將使用資料列版本控制,而不是鎖定。當交易執行的隔離等級是 READ COMMITTED 時,所有陳述式都會見到在陳述式開頭便存在的資料快照集。 當指定 OFF 時,指定 READ COMMITTED 隔離等級的交易將使用鎖定。 設定 READ_COMMITTED_SNAPSHOT 選項時,資料庫中只允許使用執行 ALTER DATABASE 命令的連接。在 ALTER DATABASE 完成以前,資料庫中不可以有其他開啟的連接。資料庫不一定要處於單一使用者模式。 |
OFF |
SQL 選項
控制 ANSI 符合選項。
選項 |
描述 |
預設值 |
---|---|---|
ANSI_NULL_DEFAULT |
決定未在 CREATE TABLE 或 ALTER TABLE 陳述式中明確定義 Null 屬性之資料行、別名資料類型或 CLR 使用者定義型別的預設值,NULL 或 NOT NULL。 當指定 ON 時,預設值是 NULL。 當指定 OFF 時,預設值是 NOT NULL。 |
OFF |
ANSI_NULLS |
當指定 ON 時,所有與 Null 值的比較都會評估為 UNKNOWN。 當指定 OFF 時,非 UNICODE 值與 Null 值都為 NULL 時,其比較會評估為 TRUE。 |
OFF |
ANSI_PADDING |
設定為 ON 時,不會修剪插入 varchar 或 nvarchar 資料行中的字元值尾端空格及插入 varbinary 資料行的二進位值尾端零。值不會填補到資料行的長度。 設定為 OFF 時,會修剪尾端空格 (varchar 或 nvarchar) 及尾端零 (varbinary)。這項設定只會影響新資料行的定義。 當 ANSI_PADDING 設為 ON 時,允許 Null 的 char 和 binary 資料行會填補到資料行的長度,但當 ANSI_PADDING 是 OFF 時,則會修剪尾端的空格和零。不接受 Null 的 char 和 binary 資料行,一律會填補到資料行的長度。 |
OFF |
ANSI_WARNINGS |
當指定 ON 時,如發生「除以零」或彙總函式出現 Null 值等情況時,會發出錯誤或警告。 當指定 OFF 時,若發生「除以零」等情況時,將不會引發警告,並且會傳回 Null 值。 |
OFF |
ARITHABORT |
當指定 ON 時,若在執行查詢期間發生溢位或除以零的錯誤時,就會結束查詢。 當指定 OFF 時,若發生了這些錯誤之一,系統將顯示警告訊息,但是查詢、批次或交易仍將持續處理,就好像沒有發生錯誤一樣。 |
OFF |
CONCAT_NULL_YIELDS_NULL |
當指定 ON 時,則在任一個運算元為 NULL 時,串連運算的結果為 NULL。 當指定 OFF 時,會將 Null 值當做空字元字串來處理。 |
OFF |
QUOTED_IDENTIFIER |
當指定 ON 時,則可用雙引號來括住分隔識別碼。 當指定 OFF 時,無法將識別碼括在引號中,且必須遵循所有的 Transact-SQL 識別碼規則。 |
OFF |
NUMERIC_ROUNDABORT |
當指定 ON 時,則在運算式中遺失有效位數時,就會產生錯誤。 當指定 OFF 時,損失有效位數並不會產生錯誤訊息,並且將結果進位成儲存該結果之資料行或變數的有效位數。 |
OFF |
RECURSIVE_TRIGGERS |
當指定 ON 時,可以對 AFTER 觸發程序進行遞迴引發。 當指定 OFF 時,僅無法對 AFTER 觸發程序進行直接遞迴引發。 |
OFF |
若要變更資料庫選項