Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 SQL Server中的唯一密钥冲突-假设错误2627安全吗?_Sql Server 2005_Unique Constraint - Fatal编程技术网

Sql server 2005 SQL Server中的唯一密钥冲突-假设错误2627安全吗?

Sql server 2005 SQL Server中的唯一密钥冲突-假设错误2627安全吗?,sql-server-2005,unique-constraint,Sql Server 2005,Unique Constraint,我需要以一种特殊的方式捕获我正在开发的C#应用程序对UNIQUE约束的违反。假设Error 2627总是与此类违规行为相对应,这样我就可以使用 if (ThisSqlException.Number == 2627) { // Handle unique constraint violation. } else { // Handle the remaing errors. } 在近似值范围内,是的 如果您在MS error and events站点中搜索SQL Server,

我需要以一种特殊的方式捕获我正在开发的C#应用程序对
UNIQUE
约束的违反。假设
Error 2627
总是与此类违规行为相对应,这样我就可以使用

if (ThisSqlException.Number == 2627)
{
    // Handle unique constraint violation.
}
else
{
    // Handle the remaing errors.
}

在近似值范围内,是的

如果您在MS error and events站点中搜索SQL Server,错误2627,则有望达到1,这表示消息将始终涉及重复密钥冲突(请注意哪些部分已参数化,哪些部分未参数化):


1As@2020-06-18,将是进入的正确页面

2627是唯一约束(包括主键),2601是唯一索引

SELECT * FROM sys.messages
WHERE text like '%duplicate%' and text like '%key%' and language_id = 1033

下面是我编写的一个方便的扩展方法,用于查找以下内容:

    public static bool IsUniqueKeyViolation(this SqlException ex)
    {
        return ex.Errors.Cast<SqlError>().Any(e => e.Class == 14 && (e.Number == 2601 || e.Number == 2627 ));
    }
公共静态bool isuniquekeyprovalition(此SqlException ex)
{
返回ex.Errors.Cast().Any(e=>e.Class==14&&(e.Number==2601 | | e.Number==2627));
}

你所说的“近似值范围内”是什么意思?@User-我的意思是,我想不出还有什么会抱怨重复的密钥,但不幸的是,该消息是根据约束类型参数化的。@Damien_不信者,链接到[此页]会导致Microsoft文档的内容。是否有意?@gbn唯一约束和唯一索引之间有什么区别?这两种方法不都强制执行索引吗?-总之,我们可以安全地得出结论,唯一约束和唯一索引之间没有实际区别,唯一约束也作为约束对象列在数据库中。@bfhd,适用于SQL Server 2000。很老了。关键句与解释句之间存在差异,如INCLUDE和WHERE子句。我从不使用约束,太死板,类检查真的有必要吗?如果有,为什么?
    public static bool IsUniqueKeyViolation(this SqlException ex)
    {
        return ex.Errors.Cast<SqlError>().Any(e => e.Class == 14 && (e.Number == 2601 || e.Number == 2627 ));
    }