2009-01-14 93 views
3

背景:
我们正在运行一个Web应用程序,其中每个用户都有一个登录系统。应用程序登录被映射到实际的SQL Server 2005登录(我们需要创建)。我们的开发和灾难恢复站点只是此设置的副本。在每晚的基础上,备份生产数据库,存储转储,并使用此文件恢复dev和DR。完成后,我们需要为每个用户运行sp_change_users_login,以将数据库用户重新映射到SQL登录名。同步SQL Server 2005登录密码

问题:
当用户在生产时更改其密码时,SQL登录密码会更改。这不会同步到dev/DR,因此如果他们尝试登录到其中一个站点,他们不能,并且需要重置他们的密码。是否有一种[好]的方法来保持这些SQL登录在多个安装中同步?

该产品的下一个版本消除了SQL登录需求,但升级并不是当前的优先级。

回答

2

使用密码对登录进行脚本散列处理,然后在删除数据库并在还原数据库备份之前删除并在目标服务器上重新创建它们。这就是我们用脚本软件编写SQL2005登录脚本的方式。您可能喜欢尝试该软件 - www.dbghost.com - 或者构建您自己的解决方案。

+0

接受,谢谢。我将很快发布示例代码。 – caseyboardman 2009-01-15 15:09:21

2

解决方案:

这是markbaekdal的答案的后续。以下是我做的:

我运行下面对生产数据库:

SELECT 'ALTER LOGIN ' + CAST(name AS VARCHAR) + ' WITH PASSWORD = ', password_hash, ' HASHED;' 
FROM sys.sql_logins 
JOIN mydatabase..mytable 
ON  mycolumn = name 
GO 

,并通过“FINDSTR ALTER”(啊,窗户)管到一个名为loginUpdates.sql文件。然后,我会针对开发和DR数据库运行该文件。它像一个魅力。

如果你想得到真正的核心,这里有一个我的同事发现的支持文章: http://support.microsoft.com/kb/918992