我有生产和开发环境服务器。每月一次,我想从生产中转储数据库并将它们加载到开发中!
但也存在一些用户和登录问题(缺少登录、权限等)。
转储后同步用户和登录的最佳方法是什么?
您可以从 prod master中bcp出您的 syslogins 表,然后将该表bcp到您的 dev master 中。这必须在第一次仔细完成。我建议您从开发系统中删除所有用户登录名(非系统默认登录名)。
要bcp进入 master,您必须设置以下标志以允许更新系统表:
sp_configure 'allow updates', 1
然后使用 1 的块大小将数据bcp到 dev 系统,这将允许丢弃重复的行,而不影响非重复的行。
bcp master..syslogins in prodsyslogins.file -Usa -Psa_password -Smyserver -n{-c} -b1
完成 bcp 后,您将需要取消设置系统表更新标志。
sp_configure 'allow updates',0
如果正确完成,您的所有 syslogin suid 应该与每个数据库中的 sysusers suid 匹配,这应该可以解决您遇到的权限问题。
锻炼注意 在开始弄乱它之前,请确保您有 master 的备份。
在开始加载之前,您可以 bcp out sysusers、sysalternates 和 sysprotects。一旦数据库在线,启用“允许更新”,删除 sysusers、sysalternates 和 sysprotects 并 bcp in。
您还可以检查是否有任何 suid 不匹配。
选择 t1.suid, t2.suid from sysusers t1, master..syslogins t2 where t1.name = t2.name and t1.suid != t2.suid and t1.suid != -2