sp_db_vardecimal_storage_format (Transact-SQL)
新增: 2006 年 12 月 12 日
傳回資料庫目前的 Vardecimal 儲存格式狀態,或是啟用或停用 Vardecimal 儲存格式的資料庫。需要使用 SQL Server 2005 Service Pack 2 或更新版本。Vardecimal 儲存格式僅適用於 SQL Server 2005 Enterprise Edition、Developer Edition 和 Evaluation Edition。
重要事項: |
---|
變更資料庫的 Vardecimal 儲存格式狀態可能會影響備份和復原、資料庫鏡像、sp_attach_db、記錄傳送和複寫。如需有關 Vardecimal 儲存格式的詳細資訊,請參閱<將十進位資料儲存成可變長度>。 |
語法
sp_db_vardecimal_storage_format [ [ @dbname = ] 'database' ]
[ , [ @vardecimal_storage_format = ] {'ON' | 'OFF' }] [ ; ]
引數
- [ @dbname=] 'database'
這是即將變更儲存格式之資料庫的名稱。database 是 sysname,沒有預設值。如果省略資料庫名稱,就會傳回 SQL Server 執行個體中所有資料庫的 Vardecimal 儲存格式狀態。
- [ @vardecimal_storage_format = ] {'ON'|'OFF'}
指定是否啟用 Vardecimal 儲存格式。@vardecimal_storage_format 可以是 ON 或 OFF。參數為 varchar(3),沒有預設值。如果提供了資料庫名稱,但省略 @vardecimal_storage_format,就會傳回指定之資料庫的目前設定。
傳回碼值
0 (成功) 或 1 (失敗)
結果集
如果無法變更資料庫儲存格式,sp_db_vardecimal_storage_format 就會傳回錯誤。如果資料庫已經處於指定的狀態,此預存程序就沒有任何作用。
備註
在下列情況中,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
權限
需要 ALTER DATABASE 權限。
範例
下列範例會在 AdventureWorks
資料庫中啟用壓縮、確認狀態,然後壓縮 Sales.SalesOrderDetail
資料表中的 decimal 和 numeric 資料行。
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
請參閱
參考
Database Engine 預存程序 (Transact-SQL)