標籤:dia media st3 val star 查看 項目 串連 table
0. 環境
- 無域環境
- 發布服務和散發者同一台主機
| 角色 |
主機名稱 |
IP |
發布名 |
發布庫名/訂閱庫名 |
| 發行伺服器 |
Server1 |
192.168.1.100 |
test3 |
db1 |
| 散發者(與發行伺服器同一執行個體) |
Server1 |
192.168.1.100 |
- |
- |
| 訂閱伺服器 |
Client1 |
192.168.1.200 |
- |
db1 |
1. 修改host檔案
在發行伺服器和訂閱伺服器都修改C:\Windows\System32\drivers\etc檔案,加入IP和主機名稱。如果是提取訂閱,則發行伺服器不用修改也要可以;如果是推送請求,則必需設定。因為SQL Server複製不能通過IP進行相關的設定。
2. 建立快照檔案夾及相應的使用者和許可權
比如快照檔案在發行伺服器的D:\ReplData下。在發行伺服器和訂閱伺服器建立相同的Windows使用者( 如果不想發行伺服器建立新的Windows使用者,則需要在發行伺服器開啟Guest使用者),如repl_admin,並加入各自的administrator組中,並設定密碼不能到期,不能修改密碼。設定D:\ReplData檔案對於建立的使用者repl_admin完全讀寫權限,並設定共用此檔案夾。
這裡,可能會有疑問為什麼repl_admin已經是administrator組的使用者,對D:\ReplData檔案夾是讀取許可權的,為什麼還要設定repl_admin完全讀寫權限?後來測試在產生快照檔案時,無法在檔案夾\\Server1\ReplData寫入。後面第4步會提到\\Server1\ReplData這個檔案夾。
3. 設定SQL Server Agent的啟動使用者
在發行伺服器設定SQL Server Agent的啟動使用者為repl_admin(最好是在SQL Server Configuration Manager進行設定),並重啟Agent。同樣,在訂閱伺服器也做同樣的步驟。注意,重啟Agent可能會影響SQL Job的計劃任務,生產環境上請檢查重啟帶來的影響。
4. 在發行伺服器建立發布和分發
在SSMS上,根據嚮導一步一步建立新的發布。如果沒有散發者,在嚮導中,會進行建立。(分發的屬性)設定快照檔案為\\Server1\ReplData。最後可以產生建立發布的SQL指令碼,可以儲存起來,以後再重啟建立,或是其他伺服器需要建立發布,只需要修改一下指令碼,再執行即可。
為什麼不直接設定D:\ReplData?其實是可以的,但預設使用\\Server1\ReplData這個檔案的話,在訂閱端預設也是讀取這個快照檔案夾\\Server1\ReplData,這樣比較方便。
當然,可以手動再修改(可以單獨修改發布的快照檔案夾路徑,也可以修改訂閱時的快照檔案夾路徑),不過還是建議使用分發的設定的預設檔案的網路路徑格式。
也可以使用FTP或其他方法把快照檔案複製到訂閱伺服器做初始化即可。SQL Server複製也支援備份資料庫的方式進行訂閱的初始化。
在第1步中,預設快照檔案夾也是可以放到真正的網路盤上,而不是發行伺服器上。考慮到直接寫到網路盤,但需要考慮這可能會造成網路影響,如果在產生很大的快照過程中,造成網路阻塞,甚至中斷,對生產造成影響。
5. 在訂閱伺服器建立訂閱
在SSMS上,根據嚮導一步一步建立新的訂閱(以提取訂閱pull subcription為例)。在Distribution Agent Security這一步,設定是這樣的:
- Run under the SQL Server Agent service account
- Connect to the Distribution: Using the following SQL Server login
這裡使用了發行伺服器的sa使用者和密碼。當然也可以另外建立專門的SQL Server複製帳號來串連。
- Connect to the Subscriber: By impersonating the process account
如果是推送push subcription的話,第2,3個選項是相反的。即Using the following SQL Server login填寫的是訂閱伺服器的SQL Server帳號,讓散發者有許可權推送資料到訂閱伺服器。
6. 設定添加新項目不初始化整個快照
在發行伺服器經常會新建立表或其他資料庫物件,如預存程序或函數等,如果要把這些新的項目加入到已經存在的訂閱中時,需要初始化這些項目。但預設的設定是初始化整個快照所有項目的。這對於大的快照來說,成本很高。
下面設定只初始化新添的項目。
use db1;GOEXEC sys.sp_changepublication @publication = ‘test3‘, @property = N‘immediate_sync‘, @value = N‘false‘GOEXEC sys.sp_changepublication @publication = ‘test3‘, @property = N‘allow_anonymous‘, @value = N‘false‘GO
然後再啟動快照代理即可對新添加的項目產生快照。
(右鍵選擇發布,選擇“查看快照代理程式狀態”——“啟動”)
相當於運行以下指令碼:
EXEC sys.sp_startpublication_snapshot@publication = ‘test3‘go
SQL Server事務複製搭建與同步經驗