适用范围:SQL Server
包含为管理数据层应用程序 (DAC) 而执行的操作的相关信息。 此表存储在数据库的架构中dbomsdb。
| 列名称 | 数据类型 | 描述 | 
|---|---|---|
| action_id | int | 操作的标识符 | 
| sequence_id | int | 标识某一操作内的步骤。 | 
| instance_id | uniqueidentifier | DAC 实例的标识符。 此列可以在dbo.sysdac_instances中的 instance_id列上联接。 | 
| action_type | tinyint | 操作类型的标识符: 0= deploy1= create2= 重命名3= register4= 创建对象5= 分离6= delete7= 数据传输8= 禁用约束9= 移动数据10= 启用约束11= 复制权限12= 设置 readonly13= 升级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= dacpac1= login2= 数据库 | 
| dac_object_type_name | varchar(8) | 受操作影响的对象类型的名称: - dacpac= DAC 实例- login- database | 
| action_status | tinyint | 标识当前操作状态的代码: 0= 未启动1= pending2= success3= 失败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 数据库的所有用户使用。