SSIS 脚本组件 DT_TEXT 换行符未正确存储在 table 中

SSIS Script Component DT_TEXT newline not correctly stored in table

我需要将在 SSIS 包数据流脚本组件中创建的大文本存储到数据类型为 varchar(max) 的目标列。因此,我将 [DT_TEXT] 用作输出列文本流。在 C# 脚本中,我调用方法

AddBlobData(Encoding.Default.GetBytes(LARGE STRING WITH LINE BREAKES)) 

所有信息都存储在 table 中,但不考虑换行符。

我尝试了不同的编码,如 ASCII、UTF8。我也尝试在每一行的末尾添加 \r\n,结果没有变化。

StringBuilder sb = new StringBuilder();

sb.AppendLine("This is the first line.");
sb.AppendLine("This is the second line.");
sb.AppendLine("This is the third line.");

DataBuffer.AddRow();
DataBuffer.VarcharMaxColumn.AddBlobData(Encoding.Default.GetBytes(sb.ToString()));

结果:

This is the first line.   This is the second line.   This is the third line.  

两行之间有一个巨大的 space,但不是我期望看到的换行符。

有人知道如何解决这个问题吗?

尽量不要使用字符串生成器:

string str;
str ="This is the first line." + Environment.NewLine + "This is the second line." + Environment.NewLine + "This is the third line."

DataBuffer.AddRow();
DataBuffer.VarcharMaxColumn.AddBlobData(Encoding.Default.GetBytes(str));

我找到了我自己问题的答案。似乎不可能将换行符从数据流脚本组件带到 table。与 DT_STR 无关,与 DT_TEXT 无关。我花了很多时间调查这件事,才发现这一点很困难。虽然,我希望我是错的。

与此同时,我正在使用一种变通方法,将各行作为不同的行存储在临时 table 中。之后,我使用 TSQL 将它们存储在目标 table.

    SELECT T2.[KeyColumn]
          ,(SELECT [VarcharMaxColumn] + CHAR(13) AS [text()]
              FROM [dbo].[TemporaryTable] AS T1
             WHERE T1.[KeyColumn] = T2.[KeyColumn]
          ORDER BY [SortOrder]
               FOR XML PATH(''), TYPE)
          ,T2.[AdditionalColumn]
      FROM [dbo].[TemporaryTable] AS T2
  GROUP BY T2.[KeyColumn], T2.[AdditionalColumn]