2009-01-14 120 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