50000: 用 RAISERROR 引发的自定义错误
SQL Server含义
这是用 RAISERROR 引发自定义(用户定义)错误且未指定消息 ID 时的默认编号(50000)。应用/过程逻辑有意引发了错误。
原因
在存储过程或脚本中,因违反业务规则、校验失败、有意的流程控制或自定义异常消息,用 RAISERROR 或 THROW 引发的自定义错误。
解决方法
阅读 RAISERROR/THROW 的消息文本,以了解实际违反的业务规则。在应用端用 TRY...CATCH 捕获该错误,并通过 ERROR_MESSAGE()/ERROR_NUMBER() 获取详情。用 sp_addmessage 定义消息,为自定义错误赋予有意义的编号。在业务逻辑中修正触发条件。
同一数据库的其他条目
- 4104The multi-part identifier could not be bound(无法绑定由多个部分组成的标识符)
- 2714There is already an object named in the database(数据库中已存在名为 ... 的对象)
- 601Could not continue scan with NOLOCK due to data movement(由于数据移动,无法继续以 NOLOCK 方式扫描)
- 3902The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION(COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION)
- 1101Could not allocate a new page because of insufficient disk space in filegroup(文件组磁盘空间不足,无法分配新页)
- 3729Cannot DROP because it is being referenced by object(无法 DROP,因为它正被对象引用)
- 3961Snapshot isolation transaction failed because the object was modified by a DDL statement(快照隔离事务失败,因为对象已被 DDL 语句修改)