我是SSIS的新手,我收到一条错误消息。谁能帮我 ?我的数据中没有重复
错误消息是 OLE DB记录可用。来源:“Microsoft SQL Server Native Client 11.0”Hresult:0x80040E2F描述:“违反PRIMARY KEY约束'PK_DimCourse'。无法在对象'dbo.DimCourse'中插入重复键。重复键值为(CS1301)。”。
我当前的表格如下
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[DimCourse](
[CourseCode] [nvarchar](10) NOT NULL,
[SubjectCode] [nvarchar](10) NOT NULL,
[CourseNumber] [nvarchar](10) NOT NULL,
[CourseTitle] [nvarchar](50) NOT NULL,
[Level1] [nvarchar](20) NOT NULL,
[Level2] [nvarchar](20) NOT NULL,
CONSTRAINT [PK_DimCourse] PRIMARY KEY CLUSTERED
(
[CourseCode] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
答案 0 :(得分:3)
我知道我来不及回答。我收到类似的错误信息,发现问题是什么,并解决了它。我希望它能帮助未来的读者。
<强>情境:强>
我试图解决的问题:
Select CodeID, CodeName from dbo.Codes GROUP BY CodeID, CodeName
。它仍然返回错误。我此时感到困惑。 真正的问题是什么?
我的源表coulmn CodeName区分大小写,但目标表中的CodeName列不区分大小写。这是因为,sql server生成脚本选项,默认情况下Script Collation设置为false。
对我有用的解决方案:
我使用脚本排序选项重新创建了我的目标表:True,这使我的目标列区分大小写并解决了我的问题。
答案 1 :(得分:0)
使用CourseCode =&#39; CS1301&#39;的记录已存在于目标中,SSIS将从源中插入相同的CourseCode,从而导致重复。
该目标或您的目标不包含CourseCode =&#39; CS1301&#39;但是,您的源数据包含两个具有相同CourseCode的行。通过将副本插入目标环境也会导致重复。
我建议您查询CourseCode =&#39; CS1301&#39;的源数据。看你是否找到两行。如果只有一行,请查询CourseCode =&#39; CS1301&#39;的目标数据。如果还有一行,则根据情况进行比较,您可能需要删除其中一行。