共用方式為


sp_db_vardecimal_storage_format (Transact-SQL)

傳回資料庫目前的 Vardecimal 儲存格式狀態,或是啟用 Vardecimal 儲存格式的資料庫。 在 SQL Server 2012 中,一定會啟用使用者資料庫。 需要 SQL Server 2005 Service Pack 2 或更新版本。

[!附註]

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

重要事項重要事項

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

傳回碼值

0 (成功) 或 1 (失敗)

結果集

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

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

範例

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

USE master ;
GO

EXEC sp_db_vardecimal_storage_format 'AdventureWorks2012', 'ON' ;
GO

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

USE AdventureWorks2012 ;
GO

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

請參閱

參考

Database Engine 預存程序 (Transact-SQL)