在一些工厂ERP之外的程序中,由于一些外部的资料导入,需按一定的规则推送到工厂的ERP数据库中。
不同的服务器与数据库之前是通过链接服务器做为桥梁交互的。而链接服务器中,首先需设定RPC远程调用。
设定好链接服务器后。脚本在数据库中也运行正常(脚本本身有跨服务器,数据库交互)。但如果在程序直接调用,同会产生如下错误:
由于没有可替代的方案去绕过这一问题。只能解决这一问题。
解决办法(仅供参考):
1.双方启动MSDTC服务 MSDTC(分布式交易协调器),协调跨多个数据库、消息队列、文件系统等资源管理器的事务。该服务的进程名为Msdtc.exe,该进程调用系统Microsoft Personal Web Server和Microsoft SQL Server。该服务用于管理多个服务器 . 位置:控制面板--管理工具--服务--Distributed Transaction Coordinator 依存关系:Remote Procedure Call(RPC)和Security Accounts Manager
由于两台服务器,一台是2003,另一台是2008.现分别列出其配置方案。
解决办法:
(1)在windows控制面版-->管理工具-->服务-->Distributed Transaction Coordinator-->属性-->启动
(2)在CMD下运行"net start msdtc"开启服务后正常。
注:如果在第1步Distributed Transaction Coordinator 无法启动,则是因为丢失了日志文件,重新创建日志文件,再启动就行了。重新创建 MSDTC 日志,并重新启动服务的步骤如下: (1) 单击"开始",单击"运行",输入 cmd 后按"确定"。 (2) 输入:msdtc -resetlog (注意运行此命令时,不要执行挂起的事务) (3) 最后输入:net start msdtc 回车,搞定!
一台电脑做如下配置(windows2003系统):
2. 单击“添加/删除 Windows 组件”。
3. 选择“应用程序服务器”,然后单击“详细信息”。
4. 选择“启用网络 DTC 访问”,然后单击“确定”。
5. 单击“下一步”;单击“完成”。
6. 在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务"。
7. 右键“我的电脑”->“属性”,在MSDTC选项卡中,点击“安全配置”按钮。
8. 在安全配置窗口中做如下设置:
(1)选中“网络DTC访问”
(2)在客户端管理中选中“允许远程客户端”“允许远程管理”
(3)在事务管理通讯中选“允许入站”“允许出站”“不要求进行验证”
(4)保证DTC登陆账户为:NT Authority\NetworkService
(5)单击"确定"。这样将会提示您"MS DTC 将会停止并重新启动。
所有的依赖服务将被停止。请按'是'继续"。单击"是"继续。
9. 关闭网络防火墙(或者开放相应的端口135或用services.msc打开服务启动TCP/IP NetBIOS Helper服务)
另外一台电脑做如下配置(windows2008系统):
2. 单击“控制面板”。
3. 打开“程序和功能”。
4. 单击“打开或关闭windows功能”。
5. 展开“角色”->“应用程序服务器”->“组件服务”->右键“本地DTC”
6. 选择“本地DTC”的“安全选项卡”,做如下设置:
(1)选中“网络DTC访问”
(2)在客户端管理中选中“允许远程客户端”“允许远程管理”
(3)在事务管理通讯中选“允许入站”“允许出站”“不要求进行验证”
(4)保证DTC登陆账户为:NT Authority\NetworkService
(5)单击"确定"。这样将会提示您"MS DTC 将会停止并重新启动。
所有的依赖服务将被停止。请按'是'继续"。单击"是"继续。
7. 关闭网络防火墙(或者开放相应的端口135或用services.msc打开服务启动TCP/IP NetBIOS Helper服务)