平面文件连接管理器回车 return/line 提要差异

Flat file connection manager carriage return/line feed discrepancy

我正在从 SQL Server 2008R2 升级到 2017,并使用 SSIS 进行相同的跳跃。有许多平面文件导入正在拾取在行中的列中嵌入回车 return/line 提要 ({CR}{LF}) 的文件。

2008R2 平面文件连接管理器忽略行内嵌入的 {CR}{LF},但 2017 年的平面文件连接管理器将每个 {CR}{LF} 视为一个新行。在升级后的连接管理器或我从头开始制作的全新连接管理器中都是一样的。

在这两个版本中,连接管理器具有相同的规格:

General Tab

  Locale: English (United States)
  Unicode: No
  Code page: 1252 (ANSI-Latin I)
  Format: Delimited
  Text qualifier: <none>
  Header row delimiter: {CR}{LF}
  Header rows to skip: 0
  Column names in the first data row: Check

Columns Tab

  Row delimiter: {CR}{LF}
  Column delimiter: Vertical Bar{|}

我正在测试的不是特别复杂的文本文件:

row_id|row_data|empty_column|created_by|one_more_field{CR}{LF}
1|random test data||ebrandt|{CR}{LF}
2|Data field with a carriage return{CR}{LF}
and a line feed embedded in it.||ebrandt|

我粘贴了行终止符,只是为了表明它们在那里。

Columns 选项卡上,BIDS 2008R2 中的预览 window 显示两行:

但在 2017 年,完全相同的文件被分成三行:

此项目没有带宽来重新处理所有文件导入。

是否有我可以改回的版本之间更改的设置?还是我缺少另一个技巧?

编辑: 为回应已被删除的评论,如果可以的话,我会指定一个文本限定符,但我得到的文件没有任何。

在平面文件连接管理器中,您需要将 AlwaysCheckForRowDelimiters 属性 设置为 False

您的文件将像以前一样被解析。

这是 2012 年做出的更改,目的是将行为更改为 the following

By default, the Flat File connection manager always checks for a row delimiter in unquoted data, and starts a new row when a row delimiter is found. This enables the connection manager to correctly parse files with rows that are missing column fields.

有关详细信息,请参阅 this link