1

我有生产和开发环境服务器。每月一次,我想从生产中转储数据库并将它们加载到开发中!

但也存在一些用户和登录问题(缺少登录、权限等)。

转储后同步用户和登录的最佳方法是什么?

4

2 回答 2

1

您可以从 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 的备份。

于 2013-03-08T13:24:00.870 回答
1

在开始加载之前,您可以 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

于 2013-03-09T16:12:04.760 回答