由于出现操作系统错误 3,进程无法读取文件D:\XXXX\X.pre (源: MSSQL_REPL,错误号: MSSQL_REPL20024)
最近着手做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.请求订阅改成推送订阅(会消耗发布服务器较多性能)