SQL Server DTS向导,字段转换出现202和200错误

当使用SQL Server 2012的DTS向导(Import and Export Data/导入导出数据)时,会出现如下问题:

当来源数据直接使用表的时候,没有任何问题

但如果来源数据是查询时,就会出现字段被映射为200(varchar)和202(nvarchar)

据说微软已经解决了这个Bug: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

但事实上我打了补丁还是会报错。

 

有一个比价方便的Workaround:

打开DTS的映射文件(对于64位向导是C:\Program Files\Microsoft SQL Server\110\DTS\MappingFiles\MSSQLToSSIS10.XML,对于32位向导是C:\Program Files (x86)\Microsoft SQL Server\110\DTS\MappingFiles\MSSQLToSSIS10.XML)

编辑如下节点:

<!-- varchar -->
	<dtm:DataTypeMapping >
		<dtm:SourceDataType>
			<dtm:DataTypeName>varchar</dtm:DataTypeName>
		</dtm:SourceDataType>
		<dtm:DestinationDataType>
			<dtm:CharacterStringType>
				<dtm:DataTypeName>DT_STR</dtm:DataTypeName>
				<dtm:UseSourceLength/>
			</dtm:CharacterStringType>
		</dtm:DestinationDataType>
	</dtm:DataTypeMapping>
	<dtm:DataTypeMapping >
		<dtm:SourceDataType>
			<dtm:DataTypeName>200</dtm:DataTypeName>
		</dtm:SourceDataType>
		<dtm:DestinationDataType>
			<dtm:CharacterStringType>
				<dtm:DataTypeName>DT_STR</dtm:DataTypeName>
				<dtm:UseSourceLength/>
			</dtm:CharacterStringType>
		</dtm:DestinationDataType>
	</dtm:DataTypeMapping>

以及

<!-- nvarchar -->
	<dtm:DataTypeMapping >
		<dtm:SourceDataType>
			<dtm:DataTypeName>nvarchar</dtm:DataTypeName>
		</dtm:SourceDataType>
		<dtm:DestinationDataType>
			<dtm:CharacterStringType>
				<dtm:DataTypeName>DT_WSTR</dtm:DataTypeName>
				<dtm:UseSourceLength/>
			</dtm:CharacterStringType>
		</dtm:DestinationDataType>
	</dtm:DataTypeMapping>	
	<dtm:DataTypeMapping >
		<dtm:SourceDataType>
			<dtm:DataTypeName>202</dtm:DataTypeName>
		</dtm:SourceDataType>
		<dtm:DestinationDataType>
			<dtm:CharacterStringType>
				<dtm:DataTypeName>DT_WSTR</dtm:DataTypeName>
				<dtm:UseSourceLength/>
			</dtm:CharacterStringType>
		</dtm:DestinationDataType>
	</dtm:DataTypeMapping>	

然后保存。这样就可以让DTS在判断到200和202的时候也正常转换。

感谢这篇中的解答贡献者:

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/97ff1f01-c02a-4c9a-b867-8eaecc464cfb/2012-sp1-no-longer-recognizes-common-data-types

转载于:https://www.cnblogs.com/galaxyyao/p/4774349.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值