Cra*_*ein 3 sql-server permissions
STAGING 环境中的数据库每 N 周被更新一次的 PRODUCTION 副本覆盖。
在现有数据库被生产副本覆盖之前,保存然后恢复用户、角色和明确授予的权限的正确方法是什么?
我不想恢复 PRODUCTION 中的用户和权限,而是恢复数据库被覆盖之前 DEV 环境中的用户和权限。
这个刷新过程必须自动化,因为有许多不同的环境,有几十个实例,可能托管多达 10 个数据库。
@AaronBertrand 是对的。您应该考虑使用不同的方法来刷新暂存环境。如果没有其他原因,您在生产中拥有的任何敏感数据现在可供新用户组使用,这些用户可能不像在生产中那样受到严格限制。但是我意识到改变你的流程可能需要时间(如果管理层甚至批准时间)。
本质上,您希望创建一个脚本,该脚本将从 prod 数据库的副本中删除所有现有权限,另一个脚本将生成曾经存在的所有权限。我个人的偏好是使用像sp_dbpermissions这样的脚本。在您的生产环境中运行它,然后将放置用户脚本列(倒数第二列)复制到 .sql 文件中并保存。当然要非常小心,不要在生产中运行它。
EXEC sp_dbpermissions 'dbName'
Run Code Online (Sandbox Code Playgroud)

您只需要第一个结果集中的倒数第二列。
接下来在临时数据库上运行相同的脚本。这次您需要从三个结果集中的每一个中复制最后一列。这将为您提供 CREATE USER、sp_AddRoleMember 和 GRANT/DENY 命令以添加此数据库的权限。再次将它们保存在 .sql 文件中。恢复后继续运行第一个脚本(删除旧权限),然后运行第二个脚本(添加新权限)。
我还强烈建议在覆盖临时数据库之前备份它。这样,如果出现问题,您可以随时将其恢复(即使到备用位置)并确认任何丢失的权限。
| 归档时间: |
|
| 查看次数: |
12400 次 |
| 最近记录: |