我正在创建 2 个远程服务器之间的复制,服务器 1 是分发服务器和发布服务器,服务器 2 是订阅服务器
服务器 1 Windows 2003 服务器 192.168.10.1 通过 vpn 连接 SQL 2005 domain1.local
服务器 2 Windows 2003 服务器 192.168.10.1 通过 vpn 连接 SQL 2005 domain2.local
当我设置复制时,一切看起来都很好,直到我查看同步状态并说:
无法启动代理执行 transact-sql 语句或批处理时发生异常 sqlserveragent 错误请求运行作业 server1-username blah blah blah
来自用户 sa 的拒绝,因为该作业已在运行,来自用户 sa 的请求将数据库上下文更改为技术错误 22022
我已经清除了服务器代理中的作业并重新启动了服务。
这可能与两个不受信任的域之间的身份验证有关,因为我可以通过 SQL Studio 浏览甚至控制每个 SQL 服务器,但只是不能设置复制?
我似乎无法找出问题所在,如能得到任何帮助我将非常感激。
克雷格
答案1
这可能是分发代理尝试将数据写入远程订阅者的权限问题,但无法完成。
一般来说,复制代理只是 SQL 服务器外部的应用程序:snapshot.exe、logread.exe、distrib.exe。Windows 帐户用于启动这些应用程序中的每一个,您可以在复制向导中配置哪个帐户(通常是 SQL 代理帐户)。每个代理所需的权限大致如下:
- Snapshot.exe - 连接到发布者,读取发布数据库,写入预先确定的快照位置
- Logread.exe - 连接到发布者和分发者,写入分发数据库,
- Distrib.exe - 从预定的快照位置读取,从分发数据库读取,写入订阅者数据库
所需的一些权限是访问 SQL 服务器,其他权限是快照位置的 Windows 文件夹级别权限。
如果您可以包含完整的错误消息,我可以确认并将相应地编辑我的答案。
答案2
您必须等待同步作业完成。通过查看快照代理状态检查它。它在您创建复制后自动启动