我有一个由第三方应用程序生成的带有一个 PK 约束的表 MYTABLE:
CREATE TABLE [dbo].[mytable](
[ID] [int] IDENTITY(1,1) NOT NULL,
[FIELD_A] [nvarchar](255) NOT NULL,
[FIELD_B] [tinyint] NOT NULL,
CONSTRAINT [mytable_PK] PRIMARY KEY CLUSTERED ( [ID] ASC ) WITH (
PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON
) ON [PRIMARY],
UNIQUE NONCLUSTERED ( [FIELD_A] ASC ) WITH (
PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON
) ON [PRIMARY]
) ON [PRIMARY]
数据非常简单:
ID FIELD_A FIELD_B
1 abc 0
2 dfgh 0
3 foo 0
我正在尝试使用数据导入将此数据导入另一个数据库中此表的空副本(使用生成脚本向导/以上 ddl 创建),但出现以下错误:
"Violation of PRIMARY KEY constraint 'mytable_PK'. Cannot insert duplicate key in object 'dbo.mytable'"
我尝试了以下方法(以验证这不是重复的问题):
- 检查目标中是否没有实际重复:目标为空
- 启用选项“启用身份插入”(如果禁用,则会失败
Violation of FOREIGN KEY...
) - 尝试使用“删除现有行”和“追加”
- 禁用约束检查:
EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'
- 尝试不导入代理 ID - 这失败,因为导入向导将字段设置为
null
如果忽略而不是留空。 - 检查可能创建重复插入的触发器
- 强制 SSMS 只删除并重新创建表
我还能检查什么来解决这个问题?