分享方式:


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可以是 ONOFF。 如果提供資料庫名稱但 省略@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 NameVardecimal 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