适用范围: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 数据库的所有用户使用。