Sql server SQL SERVER:缺少用户以所有权限创建数据库副本的权限 首先,这是我得到的: 两个用户:用户和sa sa是数据库管理员 一个具有只读权限(db_datareader角色)的主数据库,并为用户执行一些选定的存储过程(包括数据库复制过程) 用户具有全局dbcreator角色 SQL Server位于具有读取/写入文件权限的Windows Server计算机上 数据库复制存储过程,当sa或用户执行该过程时,它复制数据库及其所有内容,并在原始数据库中为用户授予权限。之后sa必须将用户映射到复制的db,并将其添加到db_所有者角色 我已经尝试过的: 将执行为sa添加到过程中,但用户无法模拟sa(管理员限制) 将行添加到过程中,例如: ALTER AUTHORIZATION ON DATABASE::copyDB TO user

Sql server SQL SERVER:缺少用户以所有权限创建数据库副本的权限 首先,这是我得到的: 两个用户:用户和sa sa是数据库管理员 一个具有只读权限(db_datareader角色)的主数据库,并为用户执行一些选定的存储过程(包括数据库复制过程) 用户具有全局dbcreator角色 SQL Server位于具有读取/写入文件权限的Windows Server计算机上 数据库复制存储过程,当sa或用户执行该过程时,它复制数据库及其所有内容,并在原始数据库中为用户授予权限。之后sa必须将用户映射到复制的db,并将其添加到db_所有者角色 我已经尝试过的: 将执行为sa添加到过程中,但用户无法模拟sa(管理员限制) 将行添加到过程中,例如: ALTER AUTHORIZATION ON DATABASE::copyDB TO user,sql-server,tsql,permissions,windows-server,Sql Server,Tsql,Permissions,Windows Server,只是想知道,是否有可能向用户授予临时权限,或者以任何其他方式授予他对复制的数据库的所有权。处理此问题的安全方法是创建一个可以执行数据库复制的签名过程。用户只需具有执行权限即可运行该过程。该过程将使用用于签名的帐户的上下文而不是用户身份运行。对程序的任何更改都需要重新签名。(不希望有人修改代码做坏事。) 例如,我使用具有sysadmin访问权限的帐户签署了一个过程。它允许用户使用xp_cmdshell执行过程以执行COBOL,而不授予用户sysadmin访问权限。如果开发人员更改代码,则不再使用连

只是想知道,是否有可能向用户授予临时权限,或者以任何其他方式授予他对复制的数据库的所有权。

处理此问题的安全方法是创建一个可以执行数据库复制的签名过程。用户只需具有执行权限即可运行该过程。该过程将使用用于签名的帐户的上下文而不是用户身份运行。对程序的任何更改都需要重新签名。(不希望有人修改代码做坏事。)

例如,我使用具有sysadmin访问权限的帐户签署了一个过程。它允许用户使用xp_cmdshell执行过程以执行COBOL,而不授予用户sysadmin访问权限。如果开发人员更改代码,则不再使用连接的正常上下文对其进行签名和执行。如果执行xp\u cmdshell,这将导致它失败。DBA需要验证代码并放弃它,然后代码才能再次工作。这种管理开销就是安全性成本


如果将备份还原到同一服务器,则会保留签名。恢复到其他服务器将需要重新调整。(主数据库主密钥通常不同。)

如果用户创建数据库,则他们是所有者。你是如何“复制”它的?用不同的名称备份和恢复它?如果是这样的话,这将还原数据库,包括权限。如果有人还原了最初没有访问权限的数据库,他们仍然不会。你是对的,但是有没有办法在不需要sa干预此类备份数据库的情况下自动更改权限?