gpt4 book ai didi

sql - 用户可以创建但不能执行存储过程

转载 作者:行者123 更新时间:2023-12-03 03:24:18 25 4
gpt4 key购买 nike

问题

我有一个 SQL Server 登录名,可以创建存储过程,但不能执行它们。我无法使用其他登录名来授予执行权限,因此我正在寻找一种替代方法来运行 sp 中的代码或授予这些权限。

The EXECUTE permission was denied on the object 'sp_mystoredprocedurename', database 'mydatabasename', schema 'dbo'.

用户无法授予自己执行权限

Cannot grant, deny, or revoke permissions to sa, dbo, entity owner, information_schema, sys, or yourself.

背景

我们有一个用 Powerbuilder 编写的 Windows 软件应用程序,可以创建和更新其自身运行的 SQL Server 数据库。

首次启动时,应用程序会提示输入数据库管理员登录名,它会使用该登录名一次(我们不存储此信息)来创建数据库和登录名。登录名被授予 db_ddladmindb_datareaderdb_datawriter 权限。目前,我们有数百个这样的应用程序和数据库运行在我们管理的服务器上,也运行在我们客户自己的服务器上。

出于这个原因,我会采取一切措施来防止需要再次要求用户进行数据库管理员登录,以便我可以授予执行权限,这将是最简单的方法...将所有服务器降级到 SQL Server 2000 的方法是当然也不是一个选择:)

我试图实现的存储过程是一个“getnewid”方法。目前,我的 Powerbuilder 代码使用多个嵌入式 TSQL 语句来实现此目的,但由于网络性能问题,我希望将这些语句移至单个存储过程。

最佳答案

这有帮助吗?

CREATE ROLE db_executer
GRANT EXECUTE to db_executer
EXEC sp_addrolemember N'db_executer', N'<username>'

关于sql - 用户可以创建但不能执行存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17589633/

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