【发布时间】:2021-03-02 23:12:36
【问题描述】:
首先,这是我所拥有的:
- 两个用户:user 和 sa
- sa 是数据库管理员
- 一个主数据库,具有只读权限(db_datareader 角色)并为用户执行一些选定的存储过程(包括数据库复制过程)
- 用户具有全局 dbcreator 角色
- SQL Server 位于具有读取/写入文件权限的 Windows Server 计算机上
- 数据库复制存储过程,当 sa 或用户执行该过程时,它会复制 db 及其所有内容并授予用户在原始 db 中的权限。之后 sa 必须将用户映射到复制的 db 并添加他 db_owner 角色。
我已经尝试过的:
- 将作为 sa 执行添加到过程中,但用户不能 IMPERSONATE sa(管理员限制)
- 将行添加到过程中,例如:
ALTER AUTHORIZATION ON DATABASE::copyDB TO user
只是想知道,是否有可能向用户授予临时权限或以任何其他方式授予他复制数据库的所有权。
【问题讨论】:
-
如果用户创建数据库,他们是所有者。你是如何“复制”它的?通过使用不同的名称备份和恢复它?如果是这样,那将完全恢复数据库,包括权限。如果最初没有访问权限的人恢复它,他们仍然不会。
-
你是对的,但是有没有什么方法可以自动更改权限,而不需要 sa 对此类备份数据库的干预?
标签: sql-server tsql permissions windows-server