日期:2014-05-17  浏览次数:20637 次

服务器 'db1' 没有为 RPC 的目的而配置
现有 
  服务器S1数据库DB1
  服务器S2数据库DB2
我在S2里面建立了一个与S1的链接 通过以下语句

EXEC sp_addlinkedserver 'S1con', '', 'MSDASQL', NULL, NULL, 'DRIVER={SQL Server};SERVER=192.168.1.105;UID=sa;PWD=;'

DB1里有个存储过程SP1

CREATE PROCEDURE [dbo].[sp1] (
@p1 varchar(20),
@P2 int
)
AS
DECLARE @R1 NUMERIC(18,2)
select @R1=sum(JE) from dj where Dh=@P1 and Xh=@P2

select isnull(@R1,0) AS 总金额
GO

DB2里有个存储过程Sp2

CREATE PROCEDURE [dbo].[Sp2] (
@p1 varchar(20),
@p2 int
)AS
exec db1con.db1.dbo.getje @p1,@p2
GO


现在的问题是从DB2里执行SP2的时候报错:
服务器: 消息 7411,级别 16,状态 1,行 1
服务器 'DB1CON' 没有为 RPC 的目的而配置。

我的目的是通过执行DB2里面的SP2可以获取DB1里面SP1的结果
因为DB2下面有很多客户端,客户端不和DB1链接单需要DB1里面的数据
我这种方法是不是不行?有没有其他或更好的方法?
谢谢!
没分了。。。以后尽量赚取积分。。。

------解决方案--------------------
MSDTC设置是否正确.
1.打开命令提示,运行"net stop msdtc",然后运行"net start msdtc"。
2.转至"组件服务管理工具"。
3.浏览至"启动管理工具"。
4.选择"组件服务"。
 a.展开"组件服务"树,然后展开"我的电脑"。
 b.右键单击"我的电脑",然后选择"属性"。
 C.在 MSDTC 选项卡中,确保选中了下列选项: 网络 DTC 访问
网络管理
网络事务
    XA 事务
 e.另外,"DTC 登录帐户"一定要设置为"NT Authority\NetworkService"。
5.单击"确定"。这样将会提示您"MS DTC 将会停止并重新启动。
  所有的依赖服务将被停止。请按'是'继续"。单击"是"继续。
6.单击"确定"关闭"我的电脑"属性窗口。

MSDTC依赖于RPC,RPC使用的端口是135,测试135端口是否打开.是否有防火墙?如果有先关了防火墙.
telnet IP 135
如果是关闭的打开它.
------解决方案--------------------
baga d fe
------解决方案--------------------
是不是打开的端口不对呢?