sp_db_vardecimal_storage_format (Transact-SQL)
適用於:SQL Server
傳回資料庫目前的 vardecimal 儲存格式狀態,或啟用 vardecimal 儲存格式的資料庫。 在 SQL Server 2008(10.0.x) 和更新版本中,一律會啟用用戶資料庫。 不過,由於 數據列層級壓縮 達到相同的目標, 因此 vardecimal 儲存格式已被取代。 只有在 SQL Server 2005 (9.x) 中才需要啟用 vardecimal 記憶體格式的資料庫。
重要
變更 資料庫的 vardecimal 記憶體格式狀態可能會影響備份和復原、資料庫鏡像、 sp_attach_db
、記錄傳送和複寫。
語法
sp_db_vardecimal_storage_format
[ [ @dbname = ] N'dbname' ]
[ , [ @vardecimal_storage_format = ] 'vardecimal_storage_format' ]
[ ; ]
引數
[ @dbname = ] N'dbname'
要變更記憶體格式的資料庫名稱。 @dbname為 sysname,預設值為 NULL
。 如果省略資料庫名稱, 則會傳回 SQL Server 實例中所有資料庫的 vardecimal 記憶體格式狀態。
[ @vardecimal_storage_format = ] 'vardecimal_storage_format'
指定是否 啟用 vardecimal 儲存格式。 @vardecimal_storage_format為 varchar(3),預設值為 NULL
。 @vardecimal_storage_format可以是 ON
或 OFF
。 如果提供資料庫名稱但 省略@vardecimal_storage_format ,則會傳回指定資料庫的目前設定。
此自變數對 SQL Server 2008 (10.0.x) 和更新版本沒有任何作用。
傳回碼值
0
(成功) 或 1
(失敗)。
結果集
如果無法變更資料庫記憶體格式, sp_db_vardecimal_storage_format
則傳回錯誤。 如果資料庫已經處於指定狀態,預存程式就不會有任何作用。
如果未提供@vardecimal_storage_format自變數,sp_db_vardecimal_storage_format
則傳回資料列Database Name
和 Vardecimal State
。
備註
sp_db_vardecimal_storage_format
會傳 回 vardecimal 狀態,但無法變更 vardecimal 狀態。
sp_db_vardecimal_storage_format
在下列情況下失敗:
- 資料庫中有作用中的使用者。
- 資料庫已啟用鏡像。
- SQL Server 版本不支援 vardecimal 記憶體格式。
若要將 vardecimal 記憶體格式狀態變更為 OFF
,資料庫必須設定為簡單的恢復模式。 當資料庫設定為簡單復原時,記錄鏈結會中斷。 將 vardecimal 記憶體格式狀態設定為 OFF
之後,請執行完整資料庫備份。
如果有使用 vardecimal 資料庫壓縮的數據表,將狀態變更為OFF
失敗。 若要變更數據表的儲存格式,請使用 sp_tableoption。 若要判斷資料庫中哪些數據表使用 vardecimal 儲存格式,請使用 函 OBJECTPROPERTY
式並搜尋 TableHasVarDecimalStorageFormat
屬性,如下列範例所示。
USE AdventureWorks2022;
GO
SELECT name,
object_id,
type_desc
FROM sys.objects
WHERE OBJECTPROPERTY(object_id, N'TableHasVarDecimalStorageFormat') = 1;
GO
範例
下列程式代碼會啟用資料庫中的 AdventureWorks2022
壓縮、確認狀態,然後壓縮數據表中的 Sales.SalesOrderDetail
十進位和數值數據行。
USE master;
GO
EXEC sp_db_vardecimal_storage_format 'AdventureWorks2022', 'ON';
GO
-- Check the vardecimal storage format state for
-- all databases in the instance.
EXEC sp_db_vardecimal_storage_format;
GO
USE AdventureWorks2022;
GO
EXEC sp_tableoption 'Sales.SalesOrderDetail',
'vardecimal storage format',
1;
GO