Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 SSI将数据导出到平面文件会将双引号呈现为十六进制字符_Sql Server 2008_Ssis - Fatal编程技术网

Sql server 2008 SSI将数据导出到平面文件会将双引号呈现为十六进制字符

Sql server 2008 SSI将数据导出到平面文件会将双引号呈现为十六进制字符,sql-server-2008,ssis,Sql Server 2008,Ssis,我有一个简单的SSIS作业,它将数据从数据库导出到平面文件。我使用双引号作为文本分隔符。当我在我的开发机器上运行作业时,一切都很好。但是,当我将作业移动到运行Windows 2008和SQL server 2008 R2的暂存服务器时,CSV文件中的双引号将导出为X0022(十六进制) 有人知道这是为什么以及如何修复吗?这看起来像是我们不久前遇到的问题。杰米·汤姆森在一篇博客文章中记录了这一点 检查两种环境中的SQL Server版本: 选择@@VERSION 虽然Tom的回答是正确的,但如果您

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


有人知道这是为什么以及如何修复吗?

这看起来像是我们不久前遇到的问题。杰米·汤姆森在一篇博客文章中记录了这一点

检查两种环境中的SQL Server版本:

选择@@VERSION

虽然Tom的回答是正确的,但如果您无法更改任何环境,则无法解决问题,理想情况下,您希望更改SSIS包,使其在所有环境中运行。作为一种解决方法,这个如何:

将以下表达式添加到平面文件连接管理器的TextQualifier中:

"\""

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

如果有帮助,我通过脚本任务创建了最后一步,并在生成的文件中替换了所有“x0022”字符串具有正确的值。

听起来您的开发计算机和临时服务器安装了不同的sql server service Pack和/或更新。在登台服务器上,打开问题包的平面文件连接管理器并检查“文本限定符”值是什么。如果这是问题所在,您将看到x0022而不是“作为值。David,我在登台机上没有Business Intelligence Development Studio(有点希望保持这种状态)。是否有方法在不使用它的情况下打开平面文件连接管理器?可能是xml文件或设置文件?请尝试使用记事本打开软件包,在xml中搜索“TextQualifier”(可能有多行,具体取决于您有多少个连接管理器),您应该找到以下行:x0022_u将其更改为“