sp_dboption (Transact-SQL)

顯示或變更資料庫選項。請勿利用 sp_dboption 來修改 master 資料庫或 tempdb 資料庫的選項。

重要事項重要事項

下一版的 Microsoft SQL Server 將不再提供此功能。請勿在新的開發工作中使用此功能,並且儘速修改使用此功能的應用程式。 請改用 ALTER DATABASE。若要修改與複寫相關聯的資料庫選項 (merge publishpublishedsubscribed),請使用 sp_replicationdboption

主題連結圖示Transact-SQL 語法慣例

語法

sp_dboption [ [ @dbname = ] 'database' ] 
    [ , [ @optname = ] 'option_name' ] 
    [ , [ @optvalue = ] 'value' ] 
[;]

引數

  • [ @dbname= ] 'database'
    這是在其中設定指定選項的資料庫名稱。database 是 sysname,預設值是 NULL。

  • [ @optname= ] 'option_name'
    這是您要設定的選項名稱。您不需要輸入完整的選項名稱。SQL Server 會辨識唯一名稱的任何部份。當選項名稱是關鍵字或包括內嵌空白時,請用引號括住它。如果省略這個參數,sp_dboption 會列出開啟的選項。 option_name 是 varchar(35),預設值是 NULL。

  • [ @optvalue=] 'value'
    這是 option_name 的新設定。如果省略這個參數,sp_dboption 會傳回目前的設定。value 可以是 true、false、on,或 off。value 是 varchar(10),預設值是 NULL。

傳回碼值

0 (成功) 或 1 (失敗)

結果集

下表顯示未提供任何參數時的結果集。

資料行名稱

資料類型

描述

Settable database options

nvarchar(35)

所有可設定的資料庫選項。

下表顯示提供的參數只有 database 時的結果集。

資料行名稱

資料類型

描述

設定選項如下

nvarchar(35)

設定給指定資料庫的選項。

下表顯示提供 option_name 時的結果集。

資料行名稱

資料類型

描述

OptionName

nvarchar(35)

選項的名稱。

CurrentSetting

char(3)

選項是開啟或關閉。

如果提供了 value,sp_dboption 不會傳回結果集。

備註

下表列出 sp_dboption 所設定的選項。如需有關每個選項的詳細資訊,請參閱<設定資料庫選項>。

選項

描述

auto create statistics

當它是 true 時,在最佳化期間,會自動建置查詢最佳化所需要的任何遺漏的統計資料。如需詳細資訊,請參閱<CREATE STATISTICS (Transact-SQL)>。

auto update statistics

當它是 true 時,在最佳化期間,會自動建置查詢最佳化所需要的任何過期統計資料。如需詳細資訊,請參閱<UPDATE STATISTICS (Transact-SQL)>。

autoclose

當它是 true 時,資料庫會完整關機,最後一位使用者登出之後,便會將它的資源釋放出來。

autoshrink

當它是 true 時,資料庫檔案是自動定期壓縮的候選項。

ANSI null default

當它是 true 時,CREATE TABLE 會遵照 ISO 規則來判斷資料行是否允許 NULL 值。

ANSI nulls

當它是 true 時,所有對於 Null 值的比較都會得出 UNKNOWN。當它是 false 時,非 UNICODE 值和 Null 值,如果兩個值都是 NULL,便會得出 TRUE。

ANSI warnings

當它是 true 時,如果發生「除以零」之類的狀況,便會發出錯誤或警告。

arithabort

當它是 true 時,溢位或除以零的錯誤會終止查詢或批次。如果交易發生這個錯誤,就會回復交易。當它是 false 時,會顯示警告訊息,但查詢、批次或交易會繼續進行,如同未發生任何錯誤一樣。

concat null yields null

當它是 true 時,如果串連作業中的任何一個運算元是 NULL,結果便是 NULL。

cursor close on commit

當它是 true 時,會關閉認可或回復交易時在開啟狀態的任何資料指標。當它是 false 時,在認可交易時,這類資料指標會維持開啟狀態。當它是 false 時,回復交易會關閉任何資料指標,但定義為 INSENSITIVE 或 STATIC 的資料指標除外。

dbo use only

當它是 true 時,只有資料庫擁有者可以使用資料庫。

default to local cursor

當它是 true 時,資料指標宣告預設為 LOCAL。

merge publish

當它是 true 時,可以針對合併式複寫來發行資料庫。

numeric roundabort

當它是 true 時,在運算式中遺失有效位數時,會產生錯誤。當它是 false 時,遺失有效位數並不會產生錯誤訊息,結果會捨入到用來儲存結果的資料行或變數的有效位數。

offline

當它是 true (on) 時,資料庫是離線。當它是 false (off) 時,資料庫是在線上。

published

當它是 true 時,可以針對複寫來發行資料庫。

quoted identifier

當它是 true 時,可以利用雙引號來含括分隔的識別碼。

read only

當它是 true 時,使用者只能讀取資料庫中的資料。使用者不能修改資料或資料庫物件;不過,可以利用 DROP DATABASE 陳述式來刪除資料庫本身。當指定了唯讀選項的新 value 時,資料庫不能在使用中。master 資料庫是例外狀況,當設定唯讀選項時,只有系統管理員可以使用 master

recursive triggers

當它是 true 時,會啟用觸發程序的遞迴引發。當它是 false 時,僅可防止直接遞迴。若要停用間接遞迴,請使用 sp_configure巢狀觸發程序伺服器選項設定為 0。

select into/bulkcopy

從 Microsoft SQL Server 2000 開始,如果資料庫的復原模式目前設為 FULL,使用 select into/bulkcopy 選項會將復原模式重設為 BULK_LOGGED。變更復原模式的正確方法是使用 ALTER DATABASE 陳述式的 SET RECOVERY 子句。

single user

當它是 true 時,每次只能有一位使用者存取資料庫。

subscribed

當它是 true 時,可以針對發行集來訂閱資料庫。

torn page detection

當它是 true 時,可以偵測到不完整的頁面。

trunc. log on chkpt.

當它是 true 時,在資料庫是記錄截斷模式時,檢查點會截斷記錄非使用中的部份。這是您可以設給 master 資料庫的唯一選項。

重要事項重要事項
從 SQL Server 2000 開始,將 trunc. log on chkpt. 選項設為 true,會將資料庫的復原模式設為 SIMPLE。將這個選項設為 false 會將復原模式設為 FULL。

資料庫擁有者或系統管理員可以在 model 資料庫執行 sp_dboption 來設定或關閉所有新資料庫的特定資料庫選項。

在執行 sp_dboption 之後,會在變更了選項的資料庫中執行檢查點。這會使變更立即生效。

sp_dboption 會變更資料庫的設定。請利用 sp_configure 來變更伺服器層級的設定,利用 SET 陳述式來變更只影響目前工作階段的設定。

權限

顯示資料庫選項及其目前值的完整清單,需要 public 角色中的成員資格。變更資料庫選項值,需要 db_owner 固定資料庫角色中的成員資格。

範例

A. 將資料庫設為唯讀

下列範例會使 AdventureWorks2008R2 資料庫成為唯讀。

USE master;
GO
EXEC sp_dboption 'AdventureWorks2008R2', 'read only', 'TRUE';

B. 關閉選項

下列範例會使 AdventureWorks2008R2 資料庫重新成為可以寫入。

USE master;
GO
EXEC sp_dboption 'AdventureWorks2008R2', 'read only', 'FALSE';