数据层应用程序表 - sysdac_history_internal

适用范围:SQL Server

包含为管理数据层应用程序 (DAC) 而执行的操作的相关信息。 此表存储在数据库的架构中dbomsdb

列名称 数据类型 描述
action_id int 操作的标识符
sequence_id int 标识某一操作内的步骤。
instance_id uniqueidentifier DAC 实例的标识符。 此列可以在dbo.sysdac_instances中的instance_id列上联接。
action_type tinyint 操作类型的标识符:

0 = deploy
1 = create
2 = 重命名
3 = register
4 = 创建对象
5 = 分离
6 = delete
7 = 数据传输
8 = 禁用约束
9 = 移动数据
10 = 启用约束
11 = 复制权限
12 = 设置 readonly
13 = 升级
14 = 注销
15 = 更新注册
16 = 设置读/写
17 = 断开用户连接
action_type_name varchar(19) 操作类型的名称:

- deploy
- create
- rename
- register
- create objects
- detach
- delete
- data transfer
- disable constraints
- move data
- enable constraints
- copy permissions
- set readonly
- upgrade
- unregister
- update registration
- set readwrite
- disconnect users
dac_object_type tinyint 受操作影响的对象类型的标识符:

0 = dacpac
1 = login
2 = 数据库
dac_object_type_name varchar(8) 受操作影响的对象类型的名称:

- dacpac = DAC 实例
- login
- database
action_status tinyint 标识当前操作状态的代码:

0 = 未启动
1 = pending
2 = success
3 = 失败
4 = 回滚
action_status_name varchar(11) 操作的当前状态:

- not started
- pending
- success
- fail
- rollback
required bit 回滚 DAC 操作时,数据库引擎使用。
dac_object_name_pretran sysname 在提交包含操作的事务前对象的名称。 仅用于数据库和登录名。
dac_object_name_posttran sysname 在提交包含操作的事务后对象的名称。 仅用于数据库和登录名。
sqlscript nvarchar(max) 在数据库或登录名上实现操作的 Transact-SQL 脚本。
payload varbinary(max) 在二进制编码字符串中保存的 DAC 包定义。
comments varchar(max) 记录接受了 DAC 升级中的潜在数据损失的用户的登录名。
error_string nvarchar(max) 在操作遇到错误时生成的错误消息。
created_by sysname 启动了创建此条目的操作的登录名。
date_created datetime 该条目的创建日期和时间。
date_modified datetime 最后修改该条目的日期和时间。

注解

DAC 管理操作(例如部署或删除 DAC)会产生多个步骤。 为每个操作都分配一个操作标识符。 将为每个步骤分配一个序列号和一行 sysdac_history_internal,其中记录了步骤的状态。 在该操作步骤开始时创建每一行,并且根据需要进行更新以便反映该操作的状态。 例如,可以分配 action_id 部署 DAC作 12,并获取以下 sysdac_history_internal四行:

action_id sequence_id action_type_name dac_object_type_name
12 0 创建 dacpac
12 1 创建 login
12 2 创建 数据库
12 3 rename 数据库

DAC作(如删除)不会从 sysdac_history_internal中删除行。 可以使用以下查询手动删除不再部署在数据库引擎实例上的 DAC 的行:

DELETE msdb.dbo.sysdac_history_internal
WHERE instance_id NOT IN (
    SELECT instance_id FROM msdb.dbo.sysdac_instances_internal
);

删除活动 DAC 的行不会影响 DAC作;唯一的效果是无法报告 DAC 的完整历史记录。

注意

目前,没有用于删除 sysdac_history_internal Azure SQL 数据库上的行的机制。

权限

需要 sysadmin 固定服务器角色的成员身份。 对此视图的只读访问权限可供有权连接到 master 数据库的所有用户使用。