代码之家  ›  专栏  ›  技术社区  ›  flashnik

在插入期间检测哪个数据集行违反了db unique约束

  •  0
  • flashnik  · 技术社区  · 16 年前

    我正在将来自SQL Server Management Studio中其他表的行插入到表中,有些记录违反了唯一约束,因为初始数据是“脏的”,并且不一致。

    我如何才能找到哪些记录违反了?

    3 回复  |  直到 16 年前
        1
  •  0
  •   Remus Rusanu    16 年前

    不幸的是,您唯一的解决方案是通过对源数据的查询来验证约束,以找到罪魁祸首。如果您使用类似ssis的东西,可以将其配置为跳过违反约束的行。

        2
  •  0
  •   Oliver Townshend    16 年前

    找出关键所在,并尝试以下操作:

    1)数据已经存在:

    从SourceTable中选择SourceKeyField 存在的位置(从desttable中选择*,其中destkeyfield=sourcekeyfield)

    2)来源重复:

    选择SourceKeyField,Count( )从sourcetable group by sourcekeyfield having count( & 1;

        3
  •  0
  •   yucer    14 年前

    检查此链接:

    DataSet hell - "Failed to enable constraints. One or more rows contain values...."

    桑杰伊谢斯 国家:

    解决方案位于DataTable类的GetErrors方法中: http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDataDataTableClassGetErrorsTopic.asp

    基本上,当我看到上面的消息时,我会检查hasserrors 属性,然后调用 报告错误的表上的GetErrors方法。GetErrors返回 一个数据行集合,可以在上调用.rowError属性 每个出错的行,以准确地找出 问题是。

    并补充说:

    …在填充之前关闭.EnableConstraints。我通常启用 再次约束,只有在原始填充完成之后。然后, 您可以捕获上面的异常并启动错误检测 执行我上面描述的功能。