SQL Server - 没有备份的 DBO

Rob*_*Rob 5 sql-server-2008 sql-server

与我之前的问题类似:Prevent Non Copy Only Backups,如何创建一个可以对我的数据库执行所有操作的用户<EXCEPT>进行备份?

我已授予他们除DB_backupOperator和之外的所有角色DB_Owner。问题是用户需要在数据库中创建对象(存储过程、函数、表等等)。

对于这些角色,这是可能的,但是,他们无法使用他们创建的对象。

IE

create proc test as select 1
go
grant exec on test to [OtherUser]
Run Code Online (Sandbox Code Playgroud)

这成功完成

grant exec on test to [TheCurrentUser]
Run Code Online (Sandbox Code Playgroud)

抛出错误

不能授予、拒绝或撤销对 sa、dbo、实体所有者、information_schema、sys 或您自己的权限

另外,如果我只是尝试执行存储过程,我会得到一个

EXECUTE 权限被拒绝

我对想法持开放态度。

谢谢。

dat*_*god 0

编写存储过程的脚本,并检查最后一行。我敢打赌,你的程序末尾有一个“grant exec”声明。发生这种情况是因为无论谁编译了 proc,都没有在 grant 之前放置 GO 语句,因此它包含在 proc 中。