Sql-Server

備份後使用者權限混亂 -> 恢復操作

  • March 6, 2017

我不得不將幾個 SQL Server 2008 數據庫移動到我們的新數據庫伺服器,所以我將它們全部備份(到 .bak 文件),將這些文件複製到新盒子並恢復它們(全部使用 SQL Management Studio 完成)。

一切正常,但現在我發現我無法使用繼續在舊 RDBMS 上工作的 SQL Server 帳戶登錄任何數據庫。順便說一句,我的 Windows 身份驗證登錄仍然可以正常工作。

我有這樣的想法,使用者和權限都將無縫複製到新的數據庫伺服器上,但似乎某處出現了問題。我將不勝感激評論/建議/提供幫助;-)

我看到您已經找到了解決問題的方法,我在原始問題中註意到的一件事是您仍然可以訪問舊伺服器。

以下關於 SO 的問題有類似的問題,並包含指向 Microsoft 文章的連結,其中包含生成使用者權限的腳本。

https://stackoverflow.com/questions/461385/restoring-a-backup-to-a-different-server-user-permissions

(針對該問題列出的資源http://support.microsoft.com/kb/918992

聽起來將伺服器設置從 Windows 身份驗證更改為混合模式身份驗證解決了您的問題,但以防萬一它沒有完全解決問題,我認為這可能有用。

這被稱為“孤立使用者”。這裡有2種修復方法

  1. 如果可以,將原始主數據庫恢復為“loginsource”,並且 sys.server_principals 有足夠的資訊來生成所有 SQL Server 和 Windows 登錄。也就是說,SID 和加密密碼
  2. 如果您僅使用 Windows 登錄,那麼您可以針對每個數據庫執行它以生成腳本

腳本:

SELECT
   'CREATE LOGIN [' + SUSER_SNAME(sid) + '] FROM WINDOWS'
FROM
   sys.database_principals
WHERE
   [type] IN ('G', 'U')

引用自:https://dba.stackexchange.com/questions/1868