---
title: 数据库追踪，用于记录数据映射项目所做的更改
date: 2019-05-01
categories:
  - data-integration
  - database
  - database-mapping
  - database-tracing
tags:
  - data-integration
  - data-mapping
  - database-mapping
  - database-tracing
  - mapforce
description: Altova MapForce 支持对所有主流关系型数据库进行追踪，从而记录数据映射项目所做的更改。
---
Status: #blog

Tags:  #data-integration #data-mapping #database-mapping #database-tracing #mapforce

Categories: [data-integration](/blog/zh/category/data-integration.md) | [database + sql](/blog/zh/category/database-sql.md) | [data-integration](/blog/zh/category/data-integration.md) | [database-tracing](/blog/zh/category/database-tracing.md)
# 数据库追踪，用于记录数据映射项目所做的更改

数据库管理员和其他数据专业人士通常希望记录关键数据库的变更情况，尤其是在通过自动化脚本或其他操作进行更新时。数据库追踪功能允许管理员跟踪关键变更或异常情况，并帮助从错误中恢复。Altova MapForce 支持对[所有主流关系型数据库](https://www.altova.com/zh/mapforce#db_mapping)进行数据库追踪，从而记录数据映射项目在运行过程中对数据库所做的更改。

当启用追踪功能时，诸如数据库插入或更新操作，以及错误等事件会被记录在一个XML文件中，您可以稍后分析该文件，或者以自动化方式进一步处理这些数据。

数据库追踪功能可以在数据库组件、表、存储过程或数据库字段级别启用。您可以选择追踪所有消息，也可以只追踪错误，或者完全禁用追踪功能。

![](/blog/images/container_ship2.jpg)

除了追踪在将数据映射到目标数据库时可能出现的错误之外，MapForce 还支持数据库事务处理，当发生错误时，它可以回滚受影响的部分数据库数据，然后可以选择继续执行其余的映射操作。

<!--more-->

启用数据库事务处理功能会将数据库组件所做的所有更改都包含在一个事务中。如果出现错误，该事务将被回滚。您可以选择继续执行剩余的映射，也可以选择停止进一步的执行。您可以在数据库组件级别和表操作级别启用事务。

让我们来看一个数据库追踪的例子。

MapForce 示例文件夹中包含一个名为 "Altova_Hierarchical_DB" 的映射，该映射可以将 XML 文档中的分层数据映射到数据库中的表。

[![将 XML 文件中的数据映射到数据库。](/blog/images/data-mapping-1.png)](data-mapping-1.png)

在数据库顶部的蓝色条形上右键单击，会打开一个属性对话框，其中包含一个选项，可以启用跟踪并指定跟踪日志文件的位置。您可以选择禁用跟踪、仅启用错误跟踪，或者启用所有操作的跟踪。您还可以在此处指定数据库跟踪日志文件的名称和路径。

[![数据库跟踪级别](/blog/images/database-tracing-levels.png)](database-tracing-levels.png)

当您通过点击映射窗口下方的“输出”按钮来执行映射操作时，将会生成两个文件。

首先，下方展示的是SQL脚本的预览。数据库只有在从“输出”菜单中选择“运行SQL脚本”选项后才会进行修改。第二个文件是XML跟踪日志的预览。

[![数据映射 SQL 脚本预览](/blog/images/data-mapping-SQL-script.png)](data-mapping-SQL-script.png)

[![数据库跟踪日志文件预览](/blog/images/tracelog-preview.png)](tracelog-preview.png)

稍后，我们将根据脚本的实际执行情况，更新跟踪日志，具体内容如上文第2-3行所述。

### 自定义数据库追踪功能

有时，您可能只想追踪少数特定的操作。MapForce 允许您在表、字段或存储过程级别自定义追踪功能。在以下示例中，我们可能希望追踪所有错误，同时记录所有添加到“Person”表中的名字和姓氏。

我们可以通过将数据库的最高级别追踪设置为“错误”来实现这一点。接下来，我们可以将“人员表”的追踪设置为“始终”，并选择要隐藏或包含的字段

[![选择数据库跟踪的字段](/blog/images/database-trace-fields.png)](database-trace-fields.png)

当我们执行 SQL 脚本时，预览窗口会显示每个 SQL 命令的结果。在下面的截图中标出了一个名称，以突出显示。

![](/blog/images/SQL-execution-result.png)

跟踪日志包含了添加到“人员”表中的所有条目的列表

![](/blog/images/tracelog-result.png)

任何添加到数据库映射中的输出跟踪功能，在MapForce Server以自动化模式执行映射时，或在FlowForce Server的控制下，也会被执行。此外，FlowForce Server的任务甚至可以自动化处理输出日志的XML文件，从而生成定制的报告。

为了进一步验证我们示例的结果，我们可以使用DatabaseSpy这款独特的工具来打开数据库 [多数据库查询、设计和数据库比较工具](https://www.altova.com/zh/databasespy), 并且可以直接查看表格的内容：

[![数据映射执行后的数据库表内容](/blog/images/final-table-contents.png)](final-table-contents.png)

在未来的文章中，我们将探讨数据库事务处理，以便在出现错误时能够回滚受影响的数据库数据。同时，如果您想亲自尝试数据库追踪，可以通过参考本文中的示例，或者针对您自己的数据库进行数据映射。您可以[下载 MapForce 的免费试用版](https://www.altova.com/zh/download)。
