Sql-Server

SQL Server 授予 STANDBY 數據庫的權限

  • March 27, 2014

所以,首先:設置。我們在域 A 中執行 SQL Server 2012 (ServerA)。我們在域 B 中執行 SQL Server 2012 (ServerB),獨立子網,無信任。出於安全原因,這些是完全獨立的域,它們不能被加入/信任/等。我們需要能夠通過 Windows Authenticated 登錄直接從域 B 查詢數據。我能夠使用本指南設置事務日誌傳送以將數據庫從 ServerA 獲取到 ServerB(總結:創建事務日誌傳送配置,使用 WinSCP 將日誌複製到遠端伺服器,使用 SQL 腳本手動創建輔助伺服器) . 所以現在我們有兩個數據庫在 ServerB 上以 STANDBY/只讀方式執行。

現在,問題是:我們無法授予對這些數據庫的訪問權限,因為它們是只讀的,因此我們無法修改權限。如何將這些數據庫(在伺服器級別或數據庫級別)的只讀訪問權限授予 ServerB 上的 DomainB 的域組?我找到了幾個關於在發送端創建 SQL 登錄的 參考資料,但我找不到任何方法來使用 Windows Auth Login 複製它。

我找到了一種需要一些停機時間的方法(數據庫尚未投入生產,所以這不是問題)並且不允許輕鬆編輯,但它可以工作!

  1. 從源伺服器分離數據庫並複製到目標伺服器
  2. 在目標伺服器上附加數據庫
  3. 創建 Windows Auth Login 並將 db_datareader 授予目標伺服器上所需的任何域使用者/組,就像對任何正常數據庫一樣
  4. 從目標伺服器分離數據庫並複制回源伺服器
  5. 重新附加到源伺服器並配置事務日誌傳送

現在可以由步驟 3 中配置的使用者/組訪問數據庫。如果移動到不同的 SQL 實例,這可能會中斷,但至少有一種方法可以在將來再次修復它。

以下步驟應該有效:

  1. 在 ServerA 上創建 windows 登錄
  2. 在映射到登錄的數據庫中創建使用者
  3. 在 ServerA 上刪除登錄名 - (可選 - 如果您希望該登錄名完好無損,則保留它,否則刪除它)。
  4. 向數據庫中的使用者授予任何所需的權限
  5. 在日誌傳送 ServerB 上創建登錄
  • 一種。如果使用 SQL 身份驗證,則在從 ServerA 指定 SID 時創建登錄
  • 灣。如果使用 Windows 身份驗證,請在不指定 SID 的情況下創建登錄名
 ---To query for the SID on the ServerA:

  Select SID
  From sys.database_principals
  Where name = 'Test'

 ---To create the login on the ServerB :

  Create Login [Test]
  With SID = '<put SID from query here>',
  Password = '<add password here>'
6. 確保自第 4 步完成後日誌傳送作業已完成一完整執行

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