程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server 2000日志傳送功能 描述(2)

SQL Server 2000日志傳送功能 描述(2)

編輯:關於SqlServer
角色變更、角色互換、以及監控服務器所在位置

Step 4: 通知監控服務器角色已變更 SQL Server 2000 的日志傳送會在監控服務器上安裝監控工具程序;最好是在第三台服務器。為了通知監控服務器日志傳送的角色已經過變更,您必須在監控服務器上執行 sp_change_monitor_role 預存程序,如程序代碼列表3所示。盡管名稱內含有 change 字眼,但它並不會變更監控服務器的角色。相反地,此預存程序會變更主要/次要服務器內檔案分享所參照(reference)的位置。意思是說:監控服務器 log_shipping_secondaries 資料表內原先參照舊次要服務器的資料會被刪除。而在 log_shipping_primaries 資料表內則是將舊主要服務器名稱更改為新主要服務器名稱。此預存程序並不會將資料新增到 log_shipping_secondarIEs 資料表,因為新的配對服務器目前尚未建置。

程序代碼列表 3: 將角色互換結果通知監控服務器之預存程序。

USE master
GO
EXEC msdb.dbo.sp_change_monitor_role
@primary_server = 'oahu\sql2k_1' ,
@secondary_server = 'oahu\sql2k_2',
@database = 'Pubscopy',
@new_source = 'oahu\sql2k_2'

步驟 5: 在次要服務器上解析登入帳號 您必須先在新主要服務器上解析舊主要服務器登入帳號,使用者才可以存取新主要服務器;方式是使用步驟1所匯出之登入帳號檔案。此匯出檔案可被 sp_resolve_logins 預存程序所讀取,然後解析各服務器間 SID 的差異。舉例來說,程序代碼列表4示范如何在新復原的 Pubscopy 數據庫上執行 sp_resolve_logins 預存程序,去解析原來的登入帳號。BOL文章曾教導您必須在目的數據庫內才能執行該預存程序。事實上,sp_resolve_logins 使用了非完整式參照(unqualifIEd reference)指向 syslogins 視觀表,所以您必須在 master 數據庫內才能執行此預存程序!

程序代碼列表4: 在次要服務器上解析登入帳號的預存程序。

USE master
GO
EXEC sp_resolve_logins
@dest_db = 'Pubscopy',
@dest_path = 'd:\',
@filename = 'syslogins.dat'
步驟 6: 連結數據庫存取與權限 BOL 對於角色變更的相關討論僅止於步驟5,但是它忽略一個重要步驟:在 "數據庫存取權限" 與 "轉移後登入帳號" 之間進行協調動作。為了在新主要服務器內線上數據庫,將移轉後已解析的登入帳號連結至相對應的數據庫使用者及其權限,您必須執行針對每個登入帳號執行一次 sp_change_users_login 預存程序。
USE pubscopy
GO
EXEC sp_change_users_login 'Update_One', 'UserName', 'LoginName'
執行該預存程序可確保 SQL Server 登入帳號能夠正確地連結相對應的數據庫使用者名稱。

到此為止,您已經成功地將次要服務器升級為新的角色,而舊主要服務器也早已變成次要服務器。然而,您仍然尚未建置新的日志傳送關系。您完成的只是角色變更,而不是角色互換

角色互換

為了達成完整的日志傳送角色互換,您只需在新主要服務器與新次要服務器之間重新設定一次日志傳送即可。因為新主要服務器已內含嶄新的數據庫維護計劃,您將會傾向在維護計劃內直接加入新次要服務器,做為目的服務器。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved