首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用RAISERROR指示拒绝访问错误

使用RAISERROR指示拒绝访问错误
EN

Stack Overflow用户
提问于 2011-08-10 20:02:03
回答 2查看 892关注 0票数 3

我有一个sproc来验证调用方是否被授权用给定的params调用这个sproc。如果调用方未被授权,我希望使用访问拒绝错误号的RAISERROR。现在,它不能是错误号10011 (在sys.messages中拒绝访问),因为错误号必须大于50000。我不想使用sp_addmessage sproc添加相同的消息(英语和本地化文本),只是为了重新创建相同的访问拒绝错误。怎么做才是对的?

编辑:,因为需要的SQL代码应该与SQL兼容,所以我最终调用了没有错误号的RAISERROR,并检查了后面代码中默认的50,000个错误代码(在SQL中,目前不支持sp_addmessagesys.messages)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-10 22:11:59

您不能这样做,因为您想要引发的不是Access denied错误,而是Access denied with these parameters错误。因此,您需要创建一个自定义错误并引发该错误。

如果您想要“真实”访问被拒绝的错误,这是一个撤销该过程的执行权限的问题。

票数 1
EN

Stack Overflow用户

发布于 2011-08-10 20:09:25

创建当前DB用户永远无法访问的表AccessDeniedTable。当您命中您的逻辑ACCESS DENIED条件时,发出一个SELECT @x=COUNT(*) FROM AccessDeniedTable,该SELECT @x=COUNT(*) FROM AccessDeniedTable将抛出所要查找的实际错误。

代码语言:javascript
复制
IF @Accesslevel<5 ---your condition here
BEGIN
    SELECT @x=COUNT(*) FROM AccessDeniedTable --throw standard ACCESS DENIED error
    RAISERROR('FATAL ERROR',16,1) --just in case actual error is not thrown
    RETURN 999999 --just in case
END
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7017004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档