【问题标题】:SSIS lookup datatype mismatchSSIS 查找数据类型不匹配
【发布时间】:2023-03-19 01:35:02
【问题描述】:

警告:我没有 SSIS 方面的经验,也没有太多的 SQL Server 经验,所以这可能是一个愚蠢的问题。

我的任务是定期更新不同服务器上数据库中的表。我已经按照 SQLServer Central 上的 Stairway to Integration Services 文章进行操作,并且我认为我的设计是正确的,但是我在查找应该更新哪些行时遇到了问题。

困难在于我的源数据中有 2 个字段(TaxOfficeNumber nvarchar(3) 和 PAYERef nvarchar(50)),它们与目标表中的单个字段 EmployerPAYEReference varchar(256) 相关。此外,目标字段丢失了任何前导零。所以我表中的“0123”和“MYREF”应该链接到目标中的“23/MYREF”。

我已设法将所有内容转换为相同的格式和数据类型,但我无法连接查找中的字段。

我的来源看起来像:

SELECT Submitter_Ref_Number
      , Transmission_DateTime
      , MessageStatus
      , HMRC_UniqueID
      , HMRC_Ack_DateTime
      , Product_Name
      , CAST(CAST(CAST(TaxDistrictNumber AS int) AS varchar(3)) + '/' + PAYERef AS varchar(50)) AS EmployerPAYReference 
FROM dbo.P11D

并且查找看起来像:

SELECT [EmployerPAYEReference]
  FROM [P11D].[dbo].[hmrc_test]

在查找编辑器中,当我尝试链接列时,出现错误:cnnot match the input column to te lookup column because the data types do not match.

我尝试了各种选择,但无济于事,有什么建议吗?

使用 SQL Server 2008 R2

【问题讨论】:

  • 您是否有机会使用 NVARCHAR 而不是 VARCHAR,反之亦然? SQL 对数据类型非常挑剔,所以首先检查一下。
  • 所以我集合了!类型与我所展示的完全一样 - 最初是源代码中的 nvarchar,我已将其强制转换为 varchar,并且最初是查找中的 varchar,没有更改。我确实尝试将两者都转换为 char,但这没有帮助。
  • 审阅后,我觉得我的答案质量低下,所以我将其删除以鼓励更多答案。
  • 只是把它扔在那里..您是否在查找之前检查了数据流路径编辑器并确认 EmployerPAYReference 列的类型为 DT_STR?
  • 哥斯拉,它显示为 DT_I4。我可以/应该做些什么来改变它吗?

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


【解决方案1】:

DT_I4 是一个 4 字节整数;我不知道 SSIS 是怎么转的

CAST(CAST(TaxDistrictNumber AS int) AS varchar(3)) + '/' + whatever 

转换成整数,但也许更有知识的人可以回答这个问题!

无论如何,你需要在Source和Lookup之间添加一个Data Conversion,并将column转换为DT_STR。就我而言,因为我希望输出列名称为 EmployerPAYEReference,所以我将 Source 中的原始 CAST 更改为将列命名为 INP_EmployerPAYEReference,然后将转换后的列名称设置为 EmployerPAYEReference。

【讨论】:

    【解决方案2】:

    这个错误的一个常见来源是所有字符串都被 SSIS 默认转换为 unicode 字符串。 您可以通过使用高级编辑器更改主要流程的列来解决此问题 或者 在查找查询中将它们转换为 NCHAR\NVARCHAR。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多