CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

求救!! 存储过程里访问远程服务器的问题

楼主wolfgao(疾风之狼)2003-12-01 17:47:02 在 MS-SQL Server / 基础类 提问

怎样在存储过程里登录远程服务器呢?比如下面的存储过程:  
   
  CREATE   PROCEDURE   GetData  
          @id int  
  AS  
          exec   sp_addlinkedserver     'srv_lnk','','SQLOLEDB','172.18.1.177'  
          exec   sp_addlinkedsrvlogin   'srv_lnk','false',null,'sa',''  
   
          Select   *   from   srv_lnk.TestDB.[dbo].TestTable   where   [id]   =   @id  
   
          exec   sp_dropserver   'srv_lnk','droplogins'  
   
  GO  
   
  可是总是说srv_lnk找不到,如果在调用sp_addlinkedsrvlogin以后运行go的话,又不能访问参数@ID了,我该怎么办啊? 问题点数:100、回复次数:6Top

1 楼CrazyFor(冬眠的鼹鼠)回复于 2003-12-01 17:48:41 得分 0

建立链接服务器  
   
  EXEC   sp_addlinkedserver    
        '别名',    
        '',    
        'MSDASQL',  
        NULL,  
        NULL,  
        'DRIVER={SQL   Server};SERVER=远程名;UID=用户;PWD=密码;'  
  GO  
   
    select   col1,col2,col3....   from   别名...tableTop

2 楼txlicenhe(马可)回复于 2003-12-01 18:51:57 得分 0

 
  /********************链接数据库   *******************************/  
   
  select   *   into   本地库名..表名   from   OPENDATASOURCE(  
                    'SQLOLEDB',  
                    'Data   Source=远程ip;User   ID=sa;Password=密码'  
                    ).库名.dbo.表名  
   
  insert   本地库名..表名   select   *   from   OPENDATASOURCE(  
                    'SQLOLEDB',  
                    'Data   Source=远程ip;User   ID=sa;Password=密码'  
                    ).库名.dbo.表名  
   
  或使用联结服务器:  
  EXEC   sp_addlinkedserver   '别名','','MSDASQL',NULL,NULL,'DRIVER={SQL   Server};SERVER=远程名;UID=用户;PWD=密码;'  
  exec   sp_addlinkedsrvlogin     @rmtsrvname='别名',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='密码'  
  GO  
  然后你就可以如下:  
  select   *   from   别名.库名.dbo.表名  
  insert   库名.dbo.表名   select   *   from   别名.库名.dbo.表名  
  select   *   into   库名.dbo.新表名   from   别名.库名.dbo.表名  
  go  
  Top

3 楼txlicenhe(马可)回复于 2003-12-01 18:53:21 得分 80

在存储过程中最好不要使用   sp_addlinkedserver,毕竟它只需建立一次就够了,以后不用再建的。  
   
  所以最好用:opendatasource的方式。Top

4 楼txlicenhe(马可)回复于 2003-12-01 18:54:42 得分 0

或者在存储过程的外面建立连接,在存储过程内部直接使用即可。  
  select   *   from   别名.库名.dbo.表名  
  Top

5 楼xlhl(顽皮兔子)回复于 2003-12-01 19:19:34 得分 0

markTop

6 楼ghosthjt(天煞孤星)回复于 2003-12-01 19:25:40 得分 20

同意马可的意见,用opendatasource是明智的选择,关于Opendatescource的用法,参考sql   server   的帮助文件,sql   编程的必备帮助Top

相关问题

  • 不允许对具有不止一条 SELECT 语句的远程存储过程或存储过程使用服务器游标。
  • 一个存储过程和触发器中怎么对远程服务器的数据库的操作
  • 在存储过程中使用链接服务器来复制远程表到本地遇到的问题
  • 远程访问数据,其中存储过程的调用问题.
  • [远程访问]在存储过程中同时访问本地和远程数据库的问题(急)
  • 如何一个数据库服务器的存储过程中远程更新另一个数据库服务器的表的内容(UPDATE)????
  • 哈,跳到sqlserver来给分?如何使用存储过程在作业中调用本地数据远程传到远程服务器上。
  • 如何远程调用存储过程?
  • 不能访问远程服务器
  • 远程访问服务器的问题

关键词

  • 存储过程
  • 远程
  • 服务器
  • 密码
  • sa
  • sql
  • null
  • server
  • 别名
  • 库

得分解答快速导航

  • 帖主:wolfgao
  • txlicenhe
  • ghosthjt

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo