sql-server - 自迁移到 SQL Server 2012 以来出现 RAISERROR 问题

标签 sql-server sql-server-2012

我正在解决服务器移动后网站和数据库的一些问题。该数据库以前是 SQL Server Express 2005,但现在在 SQL Server Express 2012 上运行。

这些问题与 RAISERROR 命令和 2012 年的更改有关。我已查看新语法的文档,但不确定如何将错误号和消息传递到网站。

存储过程和触发器中的 RAISERROR 命令的一些示例是:

RAISERROR 50000 'Member with same Email address already exists.'

RAISERROR 44447 'The record can''t be added or changed. Referential integrity rules require a related record in table ''tblBrand''.'

RAISERROR 44446 'The record can''t be added or changed. Referential integrity rules require a related record in table ''tblFragranceHouse''.'

我已经对新语法进行了一些更改,但不确定我是否正确完成了此操作。我知道如果我只传递错误文本,它会传递错误号 50000。但我不确定如何处理其他错误代码。

有关如何将这些命令转换为 2012 年的任何建议吗?

最佳答案

SQL 2012 不支持 Raiserror 的未记录版本 支持的语法是

RAISERROR(@Message,Serverity,state); 

-- @Message 可以是消息 id ,但它应该存在于 sysmessages 中,所以如果你想发送自定义消息,我认为你应该将它们添加到 sysmessages

http://msdn.microsoft.com/en-us/library/ms178592.aspx

或者另一个选项是使用 THROW

http://technet.microsoft.com/en-us/library/ee677615.aspx

关于sql-server - 自迁移到 SQL Server 2012 以来出现 RAISERROR 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21669227/

相关文章:

sql-server - "Find top 5 queries"按日期

c# - 过程或函数需要未提供的参数。执行非查询

sql - DATEDIFF 基于 WHERE 子句中的 ID

sql-server-2012 - 在 SQL Server 2012 中使用 TO_DATE

sql - 在过程中定义模式

sql - SQL中以 '-'分隔的同表三列不同创建附加唯一ID

SQL 不会打印出我的变量

sql-server - 如何在Docker上的SQL Server中从数据库备份查看.bak文件

php - 合并其他问题的mysql中的两个查询

SQL Server - 检查给定的日期+时间是否在两个日期时间变量之间的确切日期+时间