同步SQL Server 2005登录密码

同步SQL Server 2005登录密码,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,背景: 我们正在运行一个web应用程序,其中每个用户都可以登录到系统。应用程序登录名映射到实际的SQLServer2005登录名(我们需要创建该登录名)。我们的开发和灾难恢复站点只是此设置的副本。每晚备份生产数据库,归档转储,并使用此文件恢复dev和DR。完成此操作后,我们需要为每个用户运行sp_change_users_login,以将数据库用户重新映射到SQL登录 问题: 当用户在生产时更改其密码时,SQL登录密码将更改。这不会同步到dev/DR,因此如果他们尝试登录其中一个站点,则无法同步

背景:
我们正在运行一个web应用程序,其中每个用户都可以登录到系统。应用程序登录名映射到实际的SQLServer2005登录名(我们需要创建该登录名)。我们的开发和灾难恢复站点只是此设置的副本。每晚备份生产数据库,归档转储,并使用此文件恢复dev和DR。完成此操作后,我们需要为每个用户运行sp_change_users_login,以将数据库用户重新映射到SQL登录

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


此产品的下一个版本不再需要SQL登录,但升级不是当前的优先事项。

使用哈希密码编写登录脚本,然后在删除数据库后和恢复数据库备份之前删除并在目标服务器上重新创建它们。这就是我们使用scripter软件编写SQL2005登录脚本的方式。您可能想试用该软件-www.dbghost.com-或构建自己的解决方案。

解决方案:

这是markbaekdal回答的后续问题。我是这样做的:

我对生产数据库运行以下操作:

SELECT  'ALTER LOGIN ' + CAST(name AS VARCHAR) + ' WITH PASSWORD = ', password_hash, ' HASHED;'
FROM    sys.sql_logins 
JOIN    mydatabase..mytable
ON      mycolumn = name
GO
并通过“findstralter”(啊,windows)将其传输到一个名为loginUpdates.sql的文件。然后,我针对开发和DR数据库运行该文件。它就像一个符咒

如果你想成为真正的铁杆人物,我的一位同事发现了一篇支持文章: