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