首页 > 解决方案 > 更改使用文本文件的 SSIS 日志提供程序创建的文件的文件编码

问题描述

我是 SSIS 新手,我已经为文本文件设计了一个包并配置了 SSIS 日志提供程序。这工作正常,日志文件成功生成。

我们有一个监控团队,他们使用这个日志文件进行监控。他们无法读取日志文件,因为文件编码是 Unicode 格式。他们期望使用非 unicode 格式进行监控。

我试图将现有的日志文件编码更改为 ANSI,但是当我重新运行包时,我的日志文件已使用 UNICODE 编码再次创建。

有什么方法可以使用 SSIS 日志提供程序为非 unicode 编码的文本文件创建日志文件。请建议我任何解决方法。过去两天我无法找到解决方案。

标签: sql-serverloggingencodingssisflat-file

解决方案


试图找出问题所在

由于文本文件的 SSIS 日志提供程序使用文件连接管理器进行日志记录,因此您无法选择在 SSIS 包中编辑文件编码,因为这种类型的连接管理器可用于不同的文件格式(excel、text . ..) .

在搜索此问题时,看起来如果 SSIS 首次创建日志,它将写入 unicode 数据。

可能的解决方法

尝试使用记事本创建一个空文本文件并使用 ANSI 编码保存。

在此处输入图像描述

然后从 SSIS 日志记录配置中选择此文件。

其他有用的链接


更新 1 - 实验

为了测试我提供的解决方法,我运行了以下实验:

  1. 我添加了 SSIS Logging 并创建了一个新的日志文件

在此处输入图像描述

  1. 执行包后,文件以 Unicode 创建(检查我是否使用记事本打开文件并单击Save As组合框中显示的编码是Unicode
  2. 我使用记事本创建一个新文件并使用Ansi上述编码保存它。
  3. 在 SSIS 中,我将文件连接管理器更改为,Use Existing而不是Create New我选择了我创建的文件

在此处输入图像描述

  1. 执行包后,日志填充在文件中,并且编码仍然Ansi
  2. 我多次重复执行包并且撤消不会改变。

TL DR:在 ssis 包外 创建一个带有ANSI编码的文件,并在包内创建一个文件连接管理器,选择Use Existing选项并选择创建的文件。将此文件连接管理器用于记录目的。


推荐阅读