sp_db_vardecimal_storage_format (Transact-SQL)

傳回資料庫目前的 Vardecimal 儲存格式狀態,或是啟用 Vardecimal 儲存格式的資料庫。在 SQL Server 2008 中,一定會啟用使用者資料庫。需要 SQL Server 2005 Service Pack 2 或更新版本。Vardecimal 儲存格式僅適用於 SQL Server Enterprise Edition、Developer Edition 和 Evaluation Edition。

[!附註]

只有在 SQL Server 2005 中才需要啟用 Vardecimal 儲存格式的資料庫。

重要注意事項重要事項

變更資料庫的 Vardecimal 儲存格式狀態可能會影響備份和復原、資料庫鏡像、sp_attach_db、記錄傳送和複寫。如需有關 Vardecimal 儲存格式的詳細資訊,請參閱<將十進位資料儲存成可變長度>。

語法

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 或更新版本沒有任何作用。

傳回碼值

0 (成功) 或 1 (失敗)

結果集

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

如果未提供 @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 AdventureWorks ;
GO
SELECT name, object_id, type_desc
FROM sys.objects 
 WHERE OBJECTPROPERTY(object_id, 
   N'TableHasVarDecimalStorageFormat') = 1 ;
GO

範例

下列程式碼會在 AdventureWorks 資料庫中啟用壓縮、確認狀態,然後壓縮 Sales.SalesOrderDetail 資料表中的十進位和數值資料行。

USE master ;
GO

EXEC sp_db_vardecimal_storage_format 'AdventureWorks', 'ON' ;
GO

-- Check the vardecimal storage format state for
-- all databases in the instance.
EXEC sp_db_vardecimal_storage_format ;
GO

USE AdventureWorks ;
GO

EXEC sp_tableoption 'Sales.SalesOrderDetail', 'vardecimal storage format', 1 ;
GO