如何确定 check_constraint 失败的原因?

How to determine why a check_constraint is failing?

我的应用程序使用 SQL Server 2017,我遇到了一个问题 运行 一个简单的 UPDATE 到 table。

我得到以下 SQL 异常:

The UPDATE statement conflicted with the CHECK constraint "CK__AGENTS__AGENT_ST__32AB8735"

我正在尝试确定实际检查是什么,因为我不记得为有问题的列设置了检查。

我已尝试 运行 以下查询,但 definition 列是 null:

SELECT
    name,
    type_desc,
    definition
FROM 
    sys.check_constraints;

该列是一个简单的 VARCHAR(10),导致错误的 SQL 语句是这样的:

UPDATE AGENTS
SET AGENT_STATUS = 'INACTIVE';

我如何确定检查实际要查找的内容以及检查失败的原因?

I have tried running the following query but the definition column is null:

SELECT
    name,
    type_desc,
    definition
FROM 
    sys.check_constraints;

你的代码是正确的,它实际上检索了 check constraint 定义,但是如果你看到 NULL 而不是它,这意味着你没有足够的 permissions 来看到 check constraint definition.

您可以使用以下代码查看您对此 table 拥有的权限:

select *
from sys.fn_my_permissions ('your_table_schema.your_table_name', 'object');

您无法看到 check constraint 定义,除非对象上有 VIEW DEFINITION