データ層アプリケーション テーブル - sysdac_history_internal
適用対象: SQL Server
データ層アプリケーション (DAC) を管理するために実行したアクションについての情報を格納します。 このテーブルは、msdb データベースの dbo スキーマに格納されます。
列名 | データ型 | 説明 |
---|---|---|
action_id | int | アクションの識別子。 |
sequence_id | int | アクション内のステップを識別します。 |
instance_id | uniqueidentifier | DAC インスタンスの識別子。 この列は、dbo.sysdac_instances (Transact-SQL)のinstance_id列で結合できます。 |
action_type | tinyint | アクションの種類の識別子。 0 = デプロイ 1 = create 2 = 名前の変更 3 = デタッチ 4 = delete |
action_type_name | varchar(19) | アクションの種類の名前: deploy create rename 切り離す delete |
dac_object_type | tinyint | アクションの影響を受けるオブジェクトの種類の識別子。 0 = dacpac 1 = ログイン 2 = データベース |
dac_object_type_name | varchar(8) | アクションの影響を受けるオブジェクトの種類の名前: dacpac = DAC インスタンス ログイン database |
action_status | tinyint | アクションの現在のステータスを識別するコード。 0 = 保留中 1 = 成功 2 = 失敗 |
action_status_name | varchar(11) | アクションの現在のステータス。 保留中 成功 fail |
必須 | bit | DAC 操作をロールバックするときに、データベース エンジンによって使用されます。 |
dac_object_name_pretran | sysname | アクションを含むトランザクションがコミットされる前のオブジェクトの名前。 データベースとログインにのみ使用されます。 |
dac_object_name_posttran | sysname | アクションを含んでいるトランザクションをコミットした後のオブジェクトの名前。 データベースとログインにのみ使用されます。 |
sqlscript | nvarchar(max) | データベースまたはログインに対するアクションを実装する Transact-SQL スクリプト。 |
payload | varbinary(max) | バイナリ エンコード文字列に保存された DAC パッケージ定義。 |
コメント | varchar(max) | DAC アップグレードでデータ損失の可能性を受け入れたユーザーのログインを記録します。 |
error_string | nvarchar(max) | アクションでエラーが発生した場合に生成されるエラー メッセージ。 |
created_by | sysname | このエントリを作成したアクションを起動したログイン。 |
date_created | datetime | このエントリが作成された日付と時刻。 |
date_modified | datetime | エントリが最後に変更された日時。 |
解説
DAC の展開や削除などの DAC 管理アクションでは、複数の手順が生成されます。 各アクションには、アクション識別子が割り当てられます。 各ステップには、シーケンス番号と sysdac_history_internalの行が割り当てられ、ステップの状態が記録されます。 各行はアクション ステップの開始時に作成され、操作の状態を反映するように必要に応じて更新されます。 たとえば、配置 DAC アクションを 12 action_id 割り当てて、 sysdac_history_internalで 4 つの行を取得できます。
action_id | sequence_id | action_type_name | dac_object_type_name |
---|---|---|---|
12 | 0 | create | dacpac |
12 | 1 | create | login |
12 | 2 | create | database |
12 | 3 | rename | database |
削除などの DAC 操作は、 sysdac_history_internalから行を削除しません。 次のクエリを使用して、データベース エンジンのインスタンスにデプロイされなくなった DAC の行を手動で削除できます。
DELETE FROM msdb.dbo.sysdac_history_internal
WHERE instance_id NOT IN
(SELECT instance_id
FROM msdb.dbo.sysdac_instances_internal);
アクティブな DAC の行を削除しても、DAC 操作には影響しません。唯一の影響は、DAC の完全な履歴を報告できないことです。
Note
現時点では、Azure SQL Database で sysdac_history_internal 行を削除するメカニズムはありません。
アクセス許可
sysadmin 固定サーバー ロールのメンバーシップが必要です。 このビューへの読み取り専用アクセスは、マスター データベースに接続するアクセス許可を持つすべてのユーザーが使用できます。
参照
データ層アプリケーション
dbo.sysdac_instances (Transact-SQL)
sysdac_instances_internal (Transact-SQL)