sp_db_vardecimal_storage_format (Transact-SQL)
適用対象:SQL Server
データベースの現在の vardecimal ストレージ形式の状態を返すか、または vardecimal ストレージ形式のデータベースを有効にします。 SQL Server 2008 (10.0.x) 以降では、ユーザー データベースは常に有効になります。 vardecimal ストレージ形式のデータベースの有効化は、SQL Server 2005 (9.x) でのみ必要です。
Note
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 状態の列を返します。
解説
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
テーブルの decimal 列と numeric 列を圧縮します。
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
参照
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示