sp_dboption (Transact-SQL)
顯示或變更資料庫選項。請勿利用 sp_dboption 來修改 master 資料庫或 tempdb 資料庫的選項。
重要事項 |
---|
下一版的 Microsoft SQL Server 將不再提供此功能。請勿在新的開發工作中使用此功能,並且儘速修改使用此功能的應用程式。 請改用 ALTER DATABASE。若要修改與複寫相關聯的資料庫選項 (merge publish、published、subscribed),請使用 sp_replicationdboption。 |
語法
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 |
從 MicrosoftSQL 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. 將資料庫設為唯讀
下列範例會使 AdventureWorks 資料庫成為唯讀。
USE master;
GO
EXEC sp_dboption 'AdventureWorks', 'read only', 'TRUE';
B. 關閉選項
下列範例會使 AdventureWorks 資料庫重新成為可以寫入。
USE master;
GO
EXEC sp_dboption 'AdventureWorks', 'read only', 'FALSE';