sp_db_vardecimal_storage_format (Transact-SQL)

適用於:SQL Server

傳回資料庫目前的 vardecimal 儲存格式狀態,或啟用 vardecimal 儲存格式的資料庫。 從 SQL Server 2008 (10.0.x) 開始,一律會啟用用戶資料庫。 只有在 SQL Server 2005 (9.x) 中才需要啟用 vardecimal 記憶體格式的資料庫。

注意

SQL Server 2019 (15.x) 支援 vardecimal 儲存格式;不過,因為數據列層級壓縮達到相同的目標,因此 vardecimal 儲存格式已被取代。 SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。

重要

變更資料庫的 vardecimal 記憶體格式狀態可能會影響備份和復原、資料庫鏡像、sp_attach_db、記錄傳送和複寫。

語法

sp_db_vardecimal_storage_format [ [ @dbname = ] 'database_name']   
    [ , [ @vardecimal_storage_format = ] { 'ON' | 'OFF' } ]   
[;]  

引數

[ @dbname= ] 'database_name'
這是要變更記憶體格式的資料庫名稱。 database_name為 sysname,沒有預設值。 如果省略資料庫名稱,則會傳回 SQL Server 實例中所有資料庫的 vardecimal 記憶體格式狀態。

[ @vardecimal_storage_format= ] {'ON'|'OFF'}
指定是否啟用 vardecimal 儲存格式。 @vardecimal_storage_format 可以是 ON 或 OFF。 參數為 varchar(3),沒有預設值。 如果提供資料庫名稱但 @vardecimal_storage_format 省略,則會傳回指定資料庫的目前設定。

重要

此自變數對 SQL Server 2008 (10.0.x) 或更新版本沒有任何影響。

傳回碼值

0 (成功) 或 1 (失敗)

結果集

如果無法變更資料庫記憶體格式,sp_db_vardecimal_storage_format會傳回錯誤。 如果資料庫已經處於指定狀態,預存程式就不會有任何作用。

如果未提供 自 @vardecimal_storage_format 變數,則會傳回 [資料庫名稱] 和 [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  

另請參閱

資料庫引擎 預存程式 (Transact-SQL)