停止重复的sql作业

停止重复的sql作业,sql,sql-server,Sql,Sql Server,我有一个正在运行的sql作业,它正在从旧数据库导入新数据库。但是,我想为作业设置一个每小时运行一次的计划,而不是导入重复项 作业运行: INSERT INTO NewTableName SELECT [Column1] ,[Column2] ,[Column3] ,[Column4] ,GETDATE() AS [Column5] FROM OldTableName 如果我将主键分配给[Column2],作业将失败,并出现以下错误: 信息 以用户

我有一个正在运行的sql作业,它正在从旧数据库导入新数据库。但是,我想为作业设置一个每小时运行一次的计划,而不是导入重复项

作业运行:

INSERT INTO NewTableName
SELECT [Column1]
      ,[Column2]
      ,[Column3]
      ,[Column4]
      ,GETDATE() AS [Column5]
FROM OldTableName
如果我将主键分配给[Column2],作业将失败,并出现以下错误:

信息

以用户身份执行:NT服务\SQLSERVERAGENT。违反主键约束“NewTableName”。无法在对象“dbo.NewTableName”中插入重复的键。重复的键值为0001。[SQLSTATE 23000]错误2627语句已终止。[SQLSTATE 01000]错误3621。步骤失败了

有什么建议吗

通过添加以下内容解决:

WHERE NOT EXISTS 
( Select [Column2] 
FROM NewTableName 
WHERE NewTableName.[KeyId] = OldTableName.[KeyId] COLLATE DATABASE_DEFAULT )
决议加入:

WHERE NOT EXISTS 
( Select [Column2] 
FROM NewTableName 
WHERE NewTableName.[KeyId] = OldTableName.[KeyId] COLLATE DATABASE_DEFAULT )

主键列的类型是什么?它是一个标识吗?我已设法通过添加以下内容来解决问题:如果不存在,请从NewTableName中选择[Column2],其中NewTableName.[KeyId]=OldTableName.[KeyId]COLLATE DATABASE\u默认主键列的类型是什么,这是一个标识吗?我自己已经设法解决了这个问题,添加了:如果不存在,请从NewTableName中选择[Column2],其中NewTableName.[KeyId]=OldTableName.[KeyId]COLLATE DATABASE\u DEFAULT