SQL Server2012使用导入和导出向导时,用sql语句作为数据源,出现数据源类型会变成202或者203
Posted 荆棘人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server2012使用导入和导出向导时,用sql语句作为数据源,出现数据源类型会变成202或者203相关的知识,希望对你有一定的参考价值。
用MS SqlServer2012进行数据导出时,使用的查询语句导出,但是出现了错误:
“发现 xx个未知的列类型转换
您只能保存此包“
点击列查看详细错误信息时,可以看到:
[源信息]
源位置: 192.168.1.97
源提供程序: SQLNCLI11
表: [查询]
列: ItemSize
列类型: 203
SSIS 类型: (类型未知...)
映射文件(到 SSIS 类型): C:\Program Files (x86)\Microsoft SQL Server\110\DTS\MappingFiles\MSSQLToSSIS10.XML
[目标信息]
目标位置: C:\Users\Administrator\Desktop\火星公司_测试_发货单_201705181134.xls
目标提供程序: Microsoft.Jet.OLEDB.4.0
表: `查询`
列: ItemSize
列类型: VarChar
SSIS 类型: Unicode 字符串 [DT_WSTR]
映射文件(到 SSIS 类型): C:\Program Files (x86)\Microsoft SQL Server\110\DTS\MappingFiles\JetToSSIS.xml
[转换步骤]
转换未知...
SSIS 转换文件: C:\Program Files (x86)\Microsoft SQL Server\110\DTS\binn\DtwTypeConversion.xml
在CSDN的一个帖子中查到,一些信息:
这是一个bug,这里解释了原因以及解决方案
https://connect.microsoft.com/SQLServer/feedback/details/775897/sql-server-import-and-export-wizard-does-not-recognise-varchar-and-nvarchar
上面链接中介绍:
描述
当输入检索通过一个查询使用SQL Server导入和导出向导在SQL Server 2012中的数据,VARCHAR类型被公认为是“200”而nvarchar类型“202”。这导致向导显示“审查”的数据类型的警告/错误类似于以下内容:14未知列类型转换(S)你只能拯救packagethis意味着数据传输不能执行和向导只能保存转移为ssis包的问题。似乎只出现在数据源查询-即“查询指定数据传输”中指定表复制或查询的SQL Server导入和导出向导部分。选择“复制数据从一个或多个表或视图”选项中指定表复制或查询部分似乎认识到varchar和nvarchar数据类型正确。
在品论中有人指出,可以将你的查询语句,创建成视图,然后用视图导出就正常了,我没有试过。
微软的工作人员说,上面的反馈重复,所以又发了一个链接:
https://connect.microsoft.com/sqlserver/feedback/details/772761/dtswizard-in-sql-2012-sp1-no-longer-recognizes-nvarchar-varchar-data-types-when-source-is-a-query
以上链接里面,似乎提示微软已经修复了该bug;
但是我没看到怎么修复的,我仍然有该问题。
有人指出可以看看这个链接:
https://social.msdn.microsoft.com/Forums/sqlserver/en-us/97ff1f01-c02a-4c9a-b867-8eaecc464cfb/2012-sp1-no-longer-recognizes-common-data-types?forum=sqlintegrationservices
我看了不行。
还好我装了两个客户端,最后我用我的sqlserver2008解决了问题,但是解决的并不彻底啊。
以上是关于SQL Server2012使用导入和导出向导时,用sql语句作为数据源,出现数据源类型会变成202或者203的主要内容,如果未能解决你的问题,请参考以下文章
使用导入导出向导将数据从 Excel 导入 Sql Server 时,如何更改列的默认 varchar 255?
SQL Server 导入和导出向导在使用临时表的存储过程中给出无效对象错误