暂存环境中的数据库每N周用最近的生产副本覆盖一次。
保存和恢复用户、角色和显式授予权限的正确方法是什么,就像现有数据库被生产副本覆盖之前一样?
我不想恢复用户和权限,因为他们在生产中,但他们是在DEV环境中,数据库被覆盖。
这个刷新过程必须是自动化的,因为有许多不同的环境,有几十个实例可能承载多达10个数据库。
发布于 2014-11-24 15:59:00
@阿龙·伯特兰是对的。您应该考虑另一种刷新暂存环境的方法。如果没有其他原因,您在生产中拥有的任何敏感数据现在都可供一组新用户使用,这些用户可能没有在生产中受到严格的限制。然而,我意识到更改流程可能需要时间(如果管理层甚至批准时间的话)。
本质上,您希望创建一个脚本,该脚本将删除prod数据库副本中的所有现有权限,并创建另一个脚本,该脚本将生成以前存在的所有权限。我个人的偏好是使用像服务提供商_dbpermissions这样的脚本。在生产环境上运行它,然后将drop脚本列(第二列到最后一列)复制到.sql文件中并保存它。当然,要非常小心,不要在生产中运行。
EXEC sp_dbpermissions 'dbName'
您只需要从第一个结果集中的第二列到最后一列。
接下来,在暂存数据库上运行相同的脚本。这一次,您将希望从三个结果集中的每一个复制最后一列。这将为您提供CREATE、sp_AddRoleMember和GRANT/DENY命令来添加此数据库的权限。再次将它们保存在.sql文件中。还原之后,继续运行第一个脚本(删除旧权限),然后运行第二个脚本(添加新的)。
我还强烈建议在覆盖暂存数据库之前备份它。这样,如果出现问题,您可以始终将其还原回(即使是另一个位置),并确认任何缺少的权限。
https://dba.stackexchange.com/questions/83481
复制相似问题