我正在处理服务器移动后的一些网站和数据库问题。该数据库以前是SQL Server Express 2005,但现在运行在SQL Server Express 2012上。自从迁移到SQL Server 2012后发生RAISERROR问题
这些问题与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的任何建议?
新的语法似乎允许返回一条消息或一个错误号,但不是两个?任何有关返回两者的可能性的建议,以及严重程度和状态用于模仿未记录语法的值? – johna
我不认为你可以同时发送。您需要将自定义消息添加到sys.sysmessages,然后在raiserror中使用消息ID。 否则您需要使用THROW –
只有当错误编号大于50000时,我们才可以将自定义消息添加到sysmessages。原始文章(44446,44447)中的错误编号无法在SQL 2012或更高版本中生成(因为它们是不存在于sysmessages中,不能添加)。 –