gpt4 book ai didi

sql - 使用 RAISERROR 指示 ACCESS DENIED 错误

转载 作者:行者123 更新时间:2023-12-04 23:15:12 26 4
gpt4 key购买 nike

我有一个存储过程,用于验证调用者是否有权使用给定的参数调用此存储过程。如果调用者未获得授权,我想使用 ACCESS DENIED 错误号 RAISERROR。现在,它不能是错误号 10011(sys.messages 中的访问被拒绝),因为错误号必须大于 50000。我不想使用 添加相同的消息(也包括英语和本地化文本) sp_addmessage sproc 只是为了重新创建相同的 ACCESS DENIED 错误。执行此操作的正确方法是什么?

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

最佳答案

创建一个表AccessDeniedTable,当前数据库用户将永远无法访问。当您遇到您的逻辑 ACCESS DENIED 条件时,发出一个 SELECT @x=COUNT(*) FROM AccessDeniedTable,它应该抛出您所遇到的实际错误。

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

关于sql - 使用 RAISERROR 指示 ACCESS DENIED 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7017004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com