本地调用另一个服务器的表进行查询什么的,没问题。但是调用另一个服务器的存储过程就不行,提示不能连接之类话我用的是openSource方法,这个sp_addlinkedserver方法也试过了,都不行还有什么原因吗???

解决方案 »

  1.   

    具体执行的是什么?
    exec link.dbname.dbo.proc_xx   ??
      

  2.   

    權限不夠
    或者是對方服務器沒有開啓RPC
    --開啓外部RPC配置,允许其它SQL Server使用RPC远程连接到本SQL Server
    EXEC   sp_serveroption   'mgfTS','rpc out','TRUE'  (也可在企业管理器中-->数据库-->安全-->链接数据库-->点击你需要配置的链接数据库-->属性页-->   
      "server   options"-->勾选rpc   out)--設定允許外聯exec sp_configure 'show advanced options',1   --開啓高級設置
    reconfigureexec sp_configure 'Ad Hoc Distributed Queries',1--允許openrowset opendatasource訪問
    reconfigure
    exec sp_configure 'show advanced options',0   --關閉高級設置
    reconfigure
      

  3.   

    我是这样操作的:
    select * from 
     opendatasource('sqloledb','data source=172.17.254.13;user id=用户名;password=密码;').por_db.dbo.POR仕入伝票
    where 店CD = '63'
    这是查询一个表可以execute opendatasource('sqloledb','data source=172.17.254.13;user id=用户名;password=密码;').por_db.dbo.proc_test '63'
    这是执行一个存储过程(存储过程没什么特殊的),不可以PS:楼上的看不太明白,'mgfTS'这个是随便命名的吗
      

  4.   

    如果你链接了,直接这样即可.
    exec [172.17.254.13].por_db.dbo.proc_test '63' 
      

  5.   

    我是說得使用Dblink實現的
    exec   sp_addlinkedserver     'mgfTS', ' ', 'SQLOLEDB ', '10.192.91.47'
    exec   sp_addlinkedsrvlogin   'mgfTS', 'false ',null, 'password', 'password'
    exec sp_serveroption 'mgfTS' ,'query timeout','30' ;--設置響應時間
    EXEC   sp_serveroption   'mgfTS','rpc out','TRUE'   
      

  6.   

    上面的方法还是不行,在其他的服务器上跨服务器调用存储过程,表都没问题。
    只是在我的数据库上调用其他服务器的存储过程都不行,表可以查询。
    再次说明:已经有了link的设置了
    是不是我的机子上有什么地方设置问题,还请SQL高人解答
      

  7.   

    问题终于解决了,感谢楼上的提醒,就是我本地服务器属性⇒连接选项卡下面的RPC选项没有选中。
    谢谢各位了,揭帖