我正在解决服务器移动后网站和数据库的一些问题。该数据库以前是 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
关于sql-server - 自迁移到 SQL Server 2012 以来出现 RAISERROR 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21669227/