最近着手做SqlServer2008的訂閱發布,起初使用推送訂閱很順利,后來改成請求訂閱出現了以下問題,折騰好長時間終於搞定,留下此文備日后查閱,或供遇相同問題的道友參考:
首先闡述以下問題:
1. 錯誤消息:
由於出現操作系統錯誤 3,進程無法讀取文件“C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\ReplData\unc\NETNETNET-PC_CLOUDTRADB_SOA_LNGZ_20151130\20151130092501\View_TenderPurchase_45.pre”。 (源: MSSQL_REPL,錯誤號: MSSQL_REPL20024)
獲取幫助: http://help/MSSQL_REPL20024
系統找不到指定的路徑。
(源: MSSQL_REPL,錯誤號: MSSQL_REPL3)
獲取幫助: http://help/MSSQL_REPL3
這個問題的主要原因就是訂閱服務器訪問訂閱目錄快照"C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\ReplData\unc\NETNETNET-PC_CLOUDTRADB_SOA_LNGZ_20151130\20151130092501\View_TenderPurchase_45.pre"失敗造成的。
解決方式:
1.將存放快照的目錄設置為共享,並設置讀取的權限;
1)發布服務器設置:
在發布屬性中,點擊左側的快照,在右邊頁面中的快照文件的位置改為為E:\嚴\MSSQL\ReplData
把ReplData文件夾設置為共享,並且在安全項里,設置用戶權限
2)訂閱服務器設置:
然后在訂閱服務器中,右擊訂閱的服務名,選擇屬性,設置屬性參數如下
a.快照位置修改為備用文件夾
b.快照文件夾修改為 \\netnetnet-pc\ReplData
3)在訂閱服務器和發布服務器設置相同賬號密碼的系統登錄用戶(例如:賬號 administrator 密碼 zhimakaimen),之后設置兩台服務器的SQL Server 代理 (MSSQLSERVER)服務的登錄名(必須確保發布和訂閱服務器的賬號密碼相同)如圖:
2.請求訂閱改成推送訂閱(會消耗發布服務器較多性能)