Sql-Server
SQL Server 授予 STANDBY 數據庫的權限
所以,首先:設置。我們在域 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 複製它。
我找到了一種需要一些停機時間的方法(數據庫尚未投入生產,所以這不是問題)並且不允許輕鬆編輯,但它可以工作!
- 從源伺服器分離數據庫並複製到目標伺服器
- 在目標伺服器上附加數據庫
- 創建 Windows Auth Login 並將 db_datareader 授予目標伺服器上所需的任何域使用者/組,就像對任何正常數據庫一樣
- 從目標伺服器分離數據庫並複制回源伺服器
- 重新附加到源伺服器並配置事務日誌傳送
現在可以由步驟 3 中配置的使用者/組訪問數據庫。如果移動到不同的 SQL 實例,這可能會中斷,但至少有一種方法可以在將來再次修復它。
以下步驟應該有效:
- 在 ServerA 上創建 windows 登錄
- 在映射到登錄的數據庫中創建使用者
- 在 ServerA 上刪除登錄名 - (可選 - 如果您希望該登錄名完好無損,則保留它,否則刪除它)。
- 向數據庫中的使用者授予任何所需的權限
- 在日誌傳送 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 步完成後日誌傳送作業已完成一完整執行