2013-03-08 58 views
1

我有生产和开发环境的服务器。 每月一次,我想从生产中转储数据库并将它们加载到开发中!加载后同步用户和登录的最佳方式是什么?

但也有一些用户和登录问题(缺少登录,权限,无论)。

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

+1

莫非你多解释一下?哪里缺少登录和权限?这是什么原因? – 2013-03-08 09:09:05

+0

用户和登录不会在环境之间同步。对于相同的用户/登录,它的ID是不同的。所以,当我从开发数据库(我不通过master数据库),我通常有一些问题,权限和用户丢失等 – 2013-03-08 10:38:50

+0

如果用户/登录没有整体连接到数据,然后只是不不导入用户表。 如果用户*与其他数据整合,那么我不会看到如何在不使用用户生产列表的情况下将生产数据库转储到开发版本。 – 2013-03-08 10:48:03

回答

1

你可以bcp把你的syslogins表从prod master里取出来,bcp把那个表放到你的dev master里。这一定要在第一时间仔细完成。我建议您从开发系统中删除所有用户登录(非系统默认登录)。

BCP成主,你将不得不设置以下标志,以允许更新系统表:使用1块大小

sp_configure 'allow updates', 1 

然后BCP在数据dev的系统,这将允许重复的行被抛出,而不会影响非重复的行。

bcp master..syslogins in prodsyslogins.file -Usa -Psa_password -Smyserver -n{-c} -b1 

一旦您的bcp完成,您将希望取消设置系统表更新标志。

sp_configure 'allow updates',0 

如果做得正确所有SYSLOGIN suids应该匹配在每个数据库的sysusers你suids,这应该可以解决你正在运行到权限问题。

练习注意事项确保在开始调整之前备份了主设备。

+0

我通常在bcp之前再次从bcp文件中删除探针和sa登录。另外我syncronize master..sysloginroles表。另一个重要的问题是:确保在加载表格之后,每个数据库中的suid都得到了调整。 – dom 2013-03-09 23:18:38

+0

但是,与用户/登录关联的所有权限和授予怎么样? – 2013-03-11 16:19:52

+0

这些权限保存在数据库中,因此它们应该与转储一起传输。 – 2013-03-11 16:34:02

1

在启动加载之前,您可以将sysusers,sysalternates和sysprotect设为bcp。一旦数据库联机,启用'允许更新',删除sysusers,sysalternates和sysprotects和bcp英寸

您还可以检查是否有任何suid不匹配。

选择t1.suid,从sysusers中T1 t2.suid,master..syslogins中T 2,其中t1.name = t2.name和t1.suid!= t2.suid和t1.suid!= -2

+0

我只需要sysusers,sysalternates和sysprotects? – 2013-03-11 16:21:07

+0

我认为这需要澄清。在开始加载之前,您需要从DEV服务器中禁用sysusers,sysalternates和sysprotects。如果您的帐户尚未匹配,那么您可能需要查看我的答案。 – 2013-03-11 16:41:56

相关问题