最近着手作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_REPL3spa
這個問題的主要緣由就是訂閱服務器訪問訂閱目錄快照"C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\ReplData\unc\NETNETNET-PC_CLOUDTRADB_SOA_LNGZ_20151130\20151130092501\View_TenderPurchase_45.pre"失敗形成的。操作系統
解決方式:代理
1.將存放快照的目錄設置爲共享,並設置讀取的權限;blog
1)發佈服務器設置:
在發佈屬性中,點擊左側的快照,在右邊頁面中的快照文件的位置改成爲E:\嚴\MSSQL\ReplData
把ReplData文件夾設置爲共享,而且在安全項裏,設置用戶權限進程
2)訂閱服務器設置:
而後在訂閱服務器中,右擊訂閱的服務名,選擇屬性,設置屬性參數以下
a.快照位置修改成備用文件夾
b.快照文件夾修改成 \\netnetnet-pc\ReplData登錄
3)在訂閱服務器和發佈服務器設置相同帳號密碼的系統登陸用戶(例如:帳號 administrator 密碼 zhimakaimen),以後設置兩臺服務器的SQL Server 代理 (MSSQLSERVER)服務的登陸名(必須確保發佈和訂閱服務器的帳號密碼相同)如圖:權限
2.請求訂閱改爲推送訂閱(會消耗發佈服務器較多性能)