SSIS导出数据到平面文件时,双引号会呈现为十六进制字符。

4

我有一个简单的SSIS任务,将数据从数据库导出到平面文件中。我使用双引号作为文本分隔符。当我在我的开发机上运行任务时,一切正常。然而,当我将任务移动到运行Windows 2008和SQL Server 2008 R2的暂存服务器时,CSV文件中的双引号被导出为X0022(十六进制)。

有人知道原因并且该如何解决吗?


听起来你的开发机和暂存服务器安装了不同的SQL Server服务包和/或更新。在暂存服务器上,打开有问题的包的平面文件连接管理器,并检查“文本限定符”值是什么。如果这是问题所在,你会看到_x0022_而不是“作为该值。 - David Benham
David,我在暂存机器上没有商业智能开发工作室(希望保持这种状态)。有没有一种方法可以在没有它的情况下打开平面文件连接管理器?也许是一个XML文件或设置文件? - Thomas
尝试用记事本打开包,在xml中搜索“TextQualifier”(取决于你有多少个连接管理器,可能会有多行),你应该会找到以下行: <DTS:Property DTS:Name="TextQualifier">x0022</DTS:Property> 将其更改为 <DTS:Property DTS:Name="TextQualifier">"</DTS:Property> - David Benham
3个回答

7

1
虽然汤姆的答案是正确的,但如果您无法更改任何环境,则无法解决问题,理想情况下,您希望更改SSIS包以使其在所有环境中运行。以下是一个解决方法:
将以下表达式添加到“平面文件连接管理器”的“文本限定符”中:
"\""

这将生成所需的双引号文本限定符,但它被存储在软件包 XML 中作为表达式,从而避免了问题。

0

如果有帮助的话,我解决了这个问题,创建了一个最终步骤,其中包含一个脚本任务,在生成的文件中用正确的值替换所有"x0022"字符串。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接