SQL Server 2005 - 授予创建存储过程的权限(但不授予其他对象)
我想授予用户创建、更改和执行存储过程的权限,但不能创建其他数据库对象。 我将它们排除在 db_ddladmin 角色之外,但明确授予了“创建过程”和“执行”权限。 这些权限显示在有效权限列表中。 但是,当我尝试使用此登录名创建存储过程时,出现以下错误:
“指定的架构名称“dbo”不存在,或者您无权使用它。”
有什么建议么?
I want to grant a user permission to create, alter, and execute stored procedures, but without the ability to create other database objects. I excluded them from the role db_ddladmin, but explicitly granted the permissions "Create procedure" and "Execute". These permssions appear in the effective permissions list. However, when I try to create a stored procedure with this login, I get the following error:
"The specified schema name "dbo" either does not exist or you do not have permission to use it."
Any suggestions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
用户可以在他们拥有的模式中创建过程。 因此您可以为用户设置一个架构来进行开发工作。 然后,如果需要是 dbo,管理员可以在开发完成后将其放在那里。
A user can create procedures in a schema that they own. So you can set up a schema for the user to do development work. Then, if it needs to be dbo, the admin can put it there when development is done.
如果您可以创建(或更改)并执行存储过程,您就可以做任何事情。
在存储过程上执行意味着该过程上下文中的所有其他权限。 因此,如果您可以更改一个过程并运行它,那么限制其他任何内容就没有意义了。 您可以让该程序代表您充当代理。
If you can create (or alter) and execute a stored procedure, you can do anything.
Execute on a stored procedure implies all other permissions within the context of that procedure. So if you can change a procedure and run it, there's no point in restricting anything else. You could just make the procedure act as a proxy on your behalf.