Sql-Server

在 SQL Server 中,如何為現有使用者創建登錄名?

  • April 18, 2018

我將數據庫從一個 SQL Server 實例還原到另一個 SQL Server 實例。數據庫已經添加了使用者。但是他們沒有新 SQL Server 實例的登錄名。

我知道如何為新使用者創建新登錄,但如何為現有使用者創建登錄?

問題是恢復從原始伺服器實例帶回了數據庫使用者,但新實例通常對這些使用者登錄一無所知。您將在 db 級別的 Security 下看到它們,但它們沒有相應的伺服器級別登錄。

您需要在恢復數據庫的實例上重新附加具有伺服器登錄名的數據庫使用者。

有幾種方法可以解決它:

  1. 在新實例上為他們創建新的登錄名。然後,您必須將他們作為新實例上的數據庫使用者刪除並添加他們的新登錄名。考慮到您可以創建相同的登錄名,這似乎很奇怪,但是 SID(安全標識符)會有所不同,這就是 SQL 用於使用者標識的內容。對於一兩次登錄來說,這很容易。
  2. 如果要跨實例維護相同的使用者,保持相同的 SID,則使用sp_help_revlogin儲存過程。從連結複製程式碼,這將創建必要的儲存過程並在您要從中複製使用者的伺服器上執行它。它將生成一個 SQL 腳本,您可以在目標伺服器上執行該腳本來創建攜帶 SID、密碼等所有內容的相同使用者。如果您需要在目標實例上重新連接大量數據庫使用者,或者如果您不知道源實例上一個或多個 SQL 登錄的密碼,則可以採用這種方法。

引用自:https://serverfault.com/questions/176520