sp_tableoption sp_tableoption - 北京怡康軟件科技有限公司 資源網(wǎng) "/>
為用戶定義表設(shè)置選項值。sp_tableoption 可以用來在具有 text、ntext 或 image 列的表上啟用 text in row 功能。
sp_tableoption [ @TableNamePattern = ] 'table'
, [ @OptionName = ] 'option_name'
, [ @OptionValue = ] 'value'
[@TableNamePattern =] 'table'
是限定的或非限定的用戶定義數(shù)據(jù)庫表的名稱。如果提供了一個完全限定的表名,包括數(shù)據(jù)庫名,那么該數(shù)據(jù)庫名必須是當(dāng)前數(shù)據(jù)庫的名稱。多個表的表選項的設(shè)置不能一次完成。table_pattern 的數(shù)據(jù)類型為 nvarchar(776),沒有默認(rèn)設(shè)置。
[@OptionName =] 'option_name'
是表選項名。option_name 的數(shù)據(jù)類型為 varchar(35),默認(rèn)設(shè)置不是 NULL。option_name 可以有下列值。
值 | 描述 |
---|---|
pintable | 當(dāng)禁用時(默認(rèn)值),它將表標(biāo)記為不再駐留內(nèi)存。啟用時,將表標(biāo)記為駐留內(nèi)存。 |
table lock on bulk load | 禁用時(默認(rèn)值),用戶定義表的大容量處理獲得行鎖。啟用時,用戶定義表的大容量處理獲得大容量更新鎖。 |
insert row lock | Microsoft® SQL Server™ 2000 中不支持該值。 對于 SQL Server 6.5 版而言,在指定表上啟用或禁用插入行鎖定 (IRL) 操作。在 SQL Server 7.0 中,行級鎖定默認(rèn)為啟用。SQL Server 的鎖定策略為行鎖定,并可能提升為頁或表鎖定。這個選項并不改變 SQL Server 的加鎖行為(它沒有影響),包含它只是為了與現(xiàn)有腳本和過程兼容。 |
text in row | 當(dāng)為 OFF 或 0(禁用,默認(rèn)值)時,它不更改當(dāng)前行為,且在行中不存在 BLOB。 指定該值且 @OptionValue 為 ON(已啟用)或從 24 到 7000 的整數(shù)值時,直接在數(shù)據(jù)行中存儲新的 text、ntext 或 image 字符串。更新 BLOB 值時,所有現(xiàn)有的 BLOB(text、ntext 或 image 數(shù)據(jù))都將更改成 text in row 格式。有關(guān)更多信息,請參見注釋部分。 |
[ , [ @OptionValue = ] 'value' ]
表示是啟用 option_name(true、on 或 1)還是禁用 option_name(false、off 或 0)。value 的數(shù)據(jù)類型為 varchar(12),沒有默認(rèn)設(shè)置。value 不區(qū)分大小寫。
對于 text in row 選項,有效選項值是 0、on、off,或從 24 到 7000 的整數(shù)。當(dāng) value 為 on 時,默認(rèn)的限制為 256 字節(jié)。
0(成功)或錯誤號(失敗)
sp_tableoption 僅可用于設(shè)置用戶定義表的選項值。若要顯示表屬性,請使用 OBJECTPROPERTY。
sp_tableoption 的 text in row 選項只能在含有文本列的表中啟用或禁用。若表不含文本列,SQL Server 將產(chǎn)生錯誤。
當(dāng)啟用 text in row 選項時,@OptionValue 參數(shù)使用戶得以指定存儲在行中的 BLOB(二進(jìn)制大對象:text、ntext 或 image 數(shù)據(jù))的最大值。默認(rèn)設(shè)置是 256 字節(jié),但是行中的值可以在 24 到 7000 字節(jié)范圍內(nèi)變化。
如果應(yīng)用下列條件,則將 text、ntext 或 image 字符串存儲在數(shù)據(jù)行中:
當(dāng) BLOB 字符串存儲在數(shù)據(jù)行中時,讀取和寫入 text、ntext 或 image 字符串可以與讀取或?qū)懭胱址投M(jìn)制字符串一樣快。SQL Server 不必訪問單獨的頁以讀取或?qū)懭?BLOB 字符串。
如果 text、ntext 或 image 字符串比行中所指定的限制或可用空間大,則將指針存儲在該行中。在行中存儲 BLOB 字符串的條件仍然適用,但是:數(shù)據(jù)行中必須有足夠的空間容納指針。
將存儲在表行中的 BLOB 字符串和指針視為類似于可變長度的字符串。SQL Server 僅使用存儲字符串或指針?biāo)璧淖止?jié)數(shù)。
首先啟用 text in row 時,不立即轉(zhuǎn)換現(xiàn)有的 BLOB 字符串。僅當(dāng)更新字符串時才轉(zhuǎn)換它們。同樣,text in row 選項限制增加時,將不轉(zhuǎn)換已在數(shù)據(jù)行中的 text、ntext 或 image 字符串以遵從新限制,直到更新它們。
說明 禁用 text in row 選項或減小該選項的限制將需要轉(zhuǎn)換所有的 BLOB,因此進(jìn)程可能較長,這取決于必須轉(zhuǎn)換的 BLOB 字符串?dāng)?shù)。在執(zhí)行轉(zhuǎn)換進(jìn)程的過程中鎖定表。
一個 table 變量,包括返回 table 變量的函數(shù),自動啟用 text in row 選項,并具備 256 字節(jié)的 inline limit 默認(rèn)值。這一選項不可更改。
text in row 支持 TEXTPTR、WRITETEXT、UPDATETEXT 和 READTEXT 函數(shù)。用戶可以使用 SUBSTRING() 函數(shù)讀取 BLOB 的部分,但是必須記住,行內(nèi)文本指針與其它文本指針相比有不同的有效期和個數(shù)限制。有關(guān)更多信息,請參見管理 ntext、text 和 image 數(shù)據(jù)。
只有 sysadmin 固定服務(wù)器角色的成員可以修改表選項 pintable。
sysadmin 固定服務(wù)器角色成員,db_owner 和 db_ddladmin 固定數(shù)據(jù)庫角色成員以及表所有者,都可以修改任何用戶定義表的 table lock on bulk load 和 text in row 選項。其他用戶只能修改自己擁有的表的選項。
EXEC sp_tableoption 'orders', 'text in row', 'ON'
EXEC sp_tableoption 'orders', 'text in row', '1000'
sp_tableoption 'orders', 'text in row', '23'
會產(chǎn)生錯誤信息,提示參數(shù)超出范圍。
EXEC sp_tableoption 'orders', 'text in row', 'off'
-或-
EXEC sp_tableoption 'orders', 'text in row', '0'
相關(guān)文章