为什么这个SSIS包会抛出转换错误?

时间:2011-05-27 17:19:17

标签: sql-server sql-server-2008 ssis

当我运行它时,我收到以下错误:

  

数据流任务错误[SQL Server   目的地[164]]:列   无法插入“SepticSystemType”   因为类型之间的转换   不支持DT_NTEXT和DT_WSTR。

但是根据这个图表,演员是合法的:

http://msdn.microsoft.com/en-us/library/ms141704.aspx

我错过了什么吗?

2 个答案:

答案 0 :(得分:6)

这是一个可能的选择。您可以使用数据流任务中的Data Conversion Transformation任务将输入从一种数据类型转换为另一种数据类型。以下示例显示了如何完成此操作。

分步流程:

  1. 创建两个名为dbo.DataNTextdbo.DataUnicode的表,如屏幕截图# 1 和# 2 所示。
  2. 使用一个数据流任务创建一个包。使用OLE DB soruce,数据转换任务和OLE DB目标配置数据流任务。请参阅屏幕截图# 6 ,了解如何配置任务。 NText是OLE DB源任务; Conversion是数据转换转换任务;并且Unicode是OLE DB目标任务。
  3. NText配置为从表dbo.DataNText检索数据。列映射完成,如屏幕截图# 3
  4. 所示
  5. 转换任务的配置如屏幕截图# 4 所示。选择要转换的列,为输出列提供名称。通常它被命名为Copy of。将数据类型更改为Unicode String [DT_WSTR]并提供长度255。这个值用于此示例以显示转换配置的完成方式。
  6. Unicode配置为将数据保存到表dbo.DataUnicode。列映射完成,如屏幕截图# 5
  7. 所示
  8. 示例包执行显示在屏幕截图# 6
  9. 两个表的示例数据内容显示在屏幕截图# 7
  10. 这也可以使用Derived Column Transformation任务来实现。

    希望有所帮助。

    屏幕截图#1:

    1

    屏幕截图#2:

    2

    屏幕截图#3:

    3

    屏幕截图#4:

    4

    屏幕截图#5:

    5

    屏幕截图#6:

    6

    屏幕截图#7:

    7

答案 1 :(得分:1)

在该图表下,它还表示转换为DT_WSTR需要参数。你是在关注那个吗?

(DT_WSTR,20)将20个字节对或20个Unicode字符转换为DT_WSTR数据类型。

编辑:请参阅Siva的答案,了解通过其他任务实现此目标的步骤。