【发布时间】: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