可以為每個數據庫都設置若干個決定數據庫特點的數據庫級選項
只有系統管理員
數據庫所有者以及 sysadmin 和 dbcreator 固定服務器角色和 db_owner 固定數據庫角色的成員才能修改這些選項
這些選項對於每個數據庫都是唯一的
而且不影響其它數據庫
可以使用 ALTER DATABASE 語句的 SET 子句
sp_dboption 系統存儲過程
或者在某些情況下使用 SQL Server 企業管理器設置數據庫選項
說明 通過使用 sp_configure 系統存儲過程或者 SQL Server 企業管理器
可以設置服務器范圍的設置
設置了數據庫選項之後
將自動發出一個檢查點
它會使修改立即生效
若要更改新創建數據庫的任意數據庫選項的默認值
請更改 model 數據庫中的適當數據庫選項
例如對於隨後創建的任何新數據庫
如果希望 AUTO_SHRINK 數據庫選項的默認設置都為 ON
則將 model 的 AUTO_SHRINK 選項設置為 ON
有五類數據庫選項
自動選項
游標選項
恢復選項
SQL 選項
狀態選項
自動選項
自動選項控制某些自動行為
AUTO_CLOSE
當設置為 ON 時
在數據庫的最後一個用戶退出
而且數據庫中的所有過程都完成時
數據庫將關閉並完全退出系統
從而釋放所有資源
默認情況下
當使用 Microsoft® SQL Server
;
Desktop Engine 時
對於所有數據庫
此選項都設置為 ON
而對於所有其它版本都設置為 OFF
與操作系統無關
當用戶試圖再次使用數據庫時
該數據庫將自動重新打開
如果數據庫完全退出系統
則該數據庫不會重新打開
直到下一次 SQL Server 重新啟動時
用戶試圖使用該數據庫為止
當為 OFF 時
即使當前沒有用戶使用數據庫
數據庫仍然保持打開狀態
AUTO_CLOSE 選項對於桌面數據庫很有用
因為它允許將數據庫文件作為常規文件進行管理
它們可以移動
復制以制作備份
或者甚至通過電子郵件發送給其他用戶
如果應用程序與 SQL Server 反復建立連接和斷開連接
則不應對這樣的應用程序所訪問的數據庫使用 AUTO_CLOSE 選項
在每個連接之間關閉和重新打開數據庫的開銷將削弱性能
此選項的狀態可以通過檢查 DATABASEPROPERTYEX 函數的 IsAutoClose 屬性來確定
AUTO_CREATE_STATISTICS
當設置為 ON 時
將在謂詞中使用的列上自動創建統計
添加統計將提高查詢性能
因為 SQL Server 查詢優化器可以更好地確定如何估算查詢
如果未使用統計
則 SQL Server 將自動刪除它們
當設置為 OFF 時
SQL Server 不自動創建統計
相反
可以手動創建統計
默認情況下
AUTO_CREATE_STATISTICS 為 ON
此選項的狀態可通過檢查 DATABASEPROPERTYEX 函數的 IsAutoCreateStatistics 屬性來確定
AUTO_UPDATE_STATISTICS
當設置為 ON 時
因為更改表中數據而造成統計過期時
將自動更新現有的統計
當設置為 OFF 時
現有的統計不會自動更新
而可以手動更新該統計
默認情況下
將 AUTO_UPDATE_STATISTICS 設置為 ON
此選項的狀態可以通過檢查 DATABASEPROPERTYEX 函數的 IsAutoUpdateStatistics 屬性來確定
AUTO_SHRINK
當設置為 ON 時
數據庫文件可作為定期收縮的對象
數據文件和日志文件都可以自動由 SQL Server 收縮
當設置為 OFF 時
在定期檢查未使用空間的過程中
數據庫文件不自動收縮
默認情況下
當使用 SQL Server 桌面版時
對於所有數據庫
此選項都設置為 ON
而對於所有其它版本都設置為 OFF
與操作系統無關
如果將數據庫設置為 SIMPLE 恢復模型或備份日志
則 AUTO_SHRINK 只減小事務日志的大小
當文件中超過百分之二十五的部分包含未使用的空間時
AUTO_SHRINK 選項將導致收縮文件
文件將收縮至未使用空間占文件
% 的大小
或收縮至文件創建時的大小
兩者之間取其大
不能收縮只讀數據庫
此選項的狀態可通過檢查 DATABASEPROPERTYEX 函數的 IsAutoShrink 屬性來確定
游標選項
游標選項控制游標的行為和作用域
CURSOR_CLOSE_ON_COMMIT
當設置為 ON 時
在提交事務時
所有打開的游標都將自動關閉(遵從 SQL
規范)
默認情況下
此設置為 OFF
並且游標仍然在各事務邊界間保持打開狀態
僅當連接關閉或被顯式關閉時
才會關閉游標
連接級設置(使用 SET 語句設置)替代 CURSOR_CLOSE_ON_COMMIT 的默認數據庫設置
默認情況下
當連接到 SQL Server 時
ODBC 和 OLE DB 客戶端發出連接級 SET 語句
以將會話的 CURSOR_CLOSE_ON_COMMIT 設置為 OFF
此選項的狀態可通過檢查 DATABASEPROPERTYEX 函數的 IsCloseCursorsOnCommitEnabled 屬性來確定
CURSOR_DEFAULT LOCAL | GLOBAL
如果設置了 CURSOR_DEFAULT LOCAL
且創建游標時沒有將其定義為 GLOBAL
則對於在其中創建游標的批處理
存儲過程或觸發器
游標的作用域都是局部
游標名僅在該作用域內有效
在批處理
存儲過程
觸發器或存儲過程 OUTPUT 參數中
該游標可由局部游標變量引用
當批處理
存儲過程或觸發器終止時
游標將被隱式釋放
除非它在一個 OUTPUT 參數中傳遞回來
如果 OUTPUT 參數將游標傳遞回來
則游標在最後引用它的變量釋放或離開作用域時釋放
如果設置了 CURSOR_DEFAULT GLOBAL
且在創建游標時沒有將其定義為 LOCAL
則游標的作用域對於連接是全局的
在由連接執行的任何存儲過程或批處理中
都可以引用該游標名稱
該游標僅在斷開時被隱式釋放
CURSOR_DEFAULT GLOBAL 是默認設置
此選項的狀態可通過檢查 DATABASEPROPERTYEX 函數的 IsLocalCursorsDefault 屬性來確定
恢復選項
恢復選項控制數據庫的恢復模型
RECOVERY FULL | BULK_LOGGED | SIMPLE
指定 FULL 時
數據庫備份和事務日志備份用於提供從媒體故障中完全恢復的能力
包括大容量操作(如 SELECT INTO
CREATE INDEX 和大容量裝載數據)在內的所有操作都將完整記入日志
指定 BULK_LOGGED 時
對所有 SELECT INTO
CREATE INDEX 和大容量裝載數據操作的日志記錄是最小的
因此所需的日志空間較少
這種模式可獲得更好的性能和更少的日志空間使用量
但是丟失數據的危險比使用完整恢復要大
指定 SIMPLE 時
只能將數據庫恢復到上一次完整數據庫備份或上一次差異備份
SIMPLE 是 SQL Server 桌面版和數據引擎的默認設置
FULL 是所有其它版本的默認設置
此選項的狀態可通過檢查 DATABASEPROPERTYEX 函數的 Recovery 屬性來確定
TORN_PAGE_DETECTION
此恢復選項允許 SQL Server 檢測由於電源故障或其它系統停歇導致的未完成的 I/O 操作
當設置為 ON 時
只要一個
KB 的數據庫頁寫入磁盤
該頁的每個
字節扇區都有一位被翻轉
當 SQL Server 以後讀取該頁時
如果有一個位發生錯誤
則該頁將被錯誤寫入
這樣就會檢測到一個殘缺頁
通常在恢復期間檢測到殘缺頁
因為錯誤寫入的任何頁都可能在恢復時被讀取
雖然 SQL Server 數據庫頁是
KB
但是磁盤使用
字節的扇區執行 I/O 操作
因此
每個數據庫頁要寫
個扇區
如果在操作系統將第一個
字節扇區寫到磁盤和完成
KB I/O 操作之間系統失敗(例如
由於電源故障)
則可能出現殘缺頁
如果數據庫頁的第一個扇區在失敗之前成功地寫入磁盤
則磁盤上的數據庫頁將顯示為更新過的
盡管可能沒有更新成功
說明 使用備用電池的磁盤高速緩存可以保證數據成功地寫到磁盤上
或者根本就不寫
如果檢測到殘缺頁
將出現一個 I/O 錯誤
並斷開連接
如果在恢復過程中檢測到殘缺頁
則數據庫也會被標記為可疑
應該還原數據庫備份
並應用所有事務日志備份
因為它在物理上是不一致的
默認情況下
TORN_PAGE_DETECTION 為 ON
此選項的當前設置可通過檢查 DATABASEPROPERTYEX 的 IsTornPageDetectionEnabled 屬性來確定
SQL 選項
SQL 選項控制 ANSI 遵從選項
ANSI_NULL_DEFAULT
允許用戶控制數據庫默認為空
未顯式指定 NULL 或 NOT NULL 時
用戶定義的數據類型或列定義將使用為空性的默認設置
為空性由會話或數據庫設置確定
Microsoft® SQL Server
;
默認為 NOT NULL
對於 ANSI 兼容性
數據庫選項 ANSI_NULL_DEFAULT 設置為 ON 將使數據庫默認設置更改為 NULL
當此選項設置為 ON 時
在 CREATE TABLE 或 ALTER TABLE 語句過程中
沒有顯式定義為 NOT NULL 的所有用戶定義的數據類型或列都將默認為允許空值
使用約束定義的列都將遵循約束規則
而無視此設置
連接級設置(使用 SET 語句設置)替代 ANSI_NULL_DEFAULT 的默認數據庫級設置
默認情況下
當連接到 SQL Server 時
ODBC 和 OLE DB 客戶端發出連接級 SET 語句
以將會話的 ANSI_NULL_DEFAULT 設置為 ON
此選項的狀態可通過檢查 DATABASEPROPERTYEX 函數的 IsAnsiNullDefault 屬性來確定
ANSI_NULLS
當設置為 ON 時
所有與空值比較的值都取值為 NULL(未知)
當設置為 OFF 時
如果兩個值都為 NULL
則非 Unicode 值與空值比較的值都取值為 TRUE
默認情況下
ANSI_
From:http://tw.wingwit.com/Article/os/xtgl/201311/9200.html