CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  疑难问题

存储过程中执行 sp_addlinkedserver ?

楼主flysnowjava(大象~大象~鼻子长 )2003-09-02 10:57:59 在 MS-SQL Server / 疑难问题 提问

CREATE   PROCEDURE   GetDepartMentData121  
   
  AS  
       
  --增加连接服务器  
        EXEC   sp_addlinkedserver    
        'Remote_Server',    
        '',    
        'MSDASQL',  
        NULL,  
        NULL,  
        'DRIVER={SQL   Server};SERVER=DEV-DC   ;UID=sa   ;PWD=sqladmin;'  
      EXEC   sp_addlinkedsrvlogin     'Remote_Server','false'   ,NULL,'sa','sqladmin'  
      GO  
      --这里执行数据导入操作  
      exec   sp_droplinkedsrvlogin   'Remote_Server',null  
          EXEC   sp_dropserver   'Remote_Server'  
         
  在GO这里出错(语法错误),如果删除GO的话连接服务器没有添加,不能执行数据导入的操作  
     
         
   
   
         
   
   
   
  问题点数:100、回复次数:13Top

1 楼liuruhong(蓝色街灯)回复于 2003-09-02 11:05:26 得分 15

exec   sp_addlinkedserver   @ServerName,N'SQL   Server'            
  EXEC   sp_addlinkedsrvlogin   @ServerName,   'false',   NULL,   @UserName,   @Password  
   
  你最好使用N'string'那样的形式,毕竟采用unicode的方式会好一点  
  这个方面我做过,应该还算了解Top

2 楼liuruhong(蓝色街灯)回复于 2003-09-02 11:06:25 得分 10

exec   sp_addlinkedserver   @ServerName,N'SQL   Server'            
  EXEC   sp_addlinkedsrvlogin   @ServerName,   'false',   NULL,   @UserName,   @Password  
   
  你最好使用N'string'那样的形式,毕竟采用unicode的方式会好一点  
  这个方面我做过,应该还算了解Top

3 楼tj_dns(愉快的登山者)回复于 2003-09-02 11:10:12 得分 10

USE   master  
  GO  
  EXEC   sp_addlinkedserver    
          'server2',  
          N'SQL   Server'  
  GO  
   
  EXEC   sp_addlinkedsrvlogin   'server2',   'false',   NULL,   'Sa',   'pass'  
  GO  
   
  SELECT   *   FROM   server2.tools.dbo.tb_ciq  
  Top

4 楼tj_dns(愉快的登山者)回复于 2003-09-02 11:18:11 得分 10

USE   master  
  GO  
  EXEC   sp_addlinkedserver    
          'server2',  
          N'SQL   Server'  
  GO  
   
  EXEC   sp_addlinkedsrvlogin   'server2',   'false',   NULL,   'Sa',   'pass'  
  GO  
   
  SELECT   *   FROM   server2.tools.dbo.tb_ciq  
  Top

5 楼liuyun2003(流云(老老实实做人,认认真真还贷))回复于 2003-09-02 11:19:04 得分 20

GO是一个批处理结束的标志。所以,你在那里加上这个以后,就代表这个存储过程结束了。这样就会出现问题了。如果不加GO的话,就没有提交,所以,没有建立链接服务器。你这样处理一下看看,把  
  sp_addlinkedserver    
        'Remote_Server',    
        '',    
        'MSDASQL',  
        NULL,  
        NULL,  
        'DRIVER={SQL   Server};SERVER=DEV-DC   ;UID=sa   ;PWD=sqladmin;'  
      GO  
      转换成一个长的字符串,然后在EXEC里执行。如果还有问题,你就只能手工建立链接服务器了。Top

6 楼txlicenhe(马可)回复于 2003-09-02 11:27:04 得分 5

1:服务器操作  
   
  EXEC   sp_addlinkedserver    
        'Test',   --名称  
        '',    
        'MSDASQL',  
        NULL,  
        NULL,  
        'DRIVER={SQL   Server};SERVER=服务器名;UID=sa;PWD=密码;'  
  GO  
  -------以上为添加连接服务器  
   
  exec   sp_addlinkedsrvlogin   'test','false','sa','sa',''Top

7 楼zjcxc(邹建)回复于 2003-09-02 11:52:17 得分 5

你是要将数据处理完成后删除链接服务器吧?  
  那就不要加上go  
   
  go是代表一个批处理结束,如果加上它,则表明你的存储过程只包含  
  CREATE   PROCEDURE   GetDepartMentData121  
  AS  
  --增加连接服务器  
        EXEC   sp_addlinkedserver    
        'Remote_Server',    
        '',    
        'MSDASQL',  
        NULL,  
        NULL,  
        'DRIVER={SQL   Server};SERVER=DEV-DC   ;UID=sa   ;PWD=sqladmin;'  
      EXEC   sp_addlinkedsrvlogin     'Remote_Server','false'   ,NULL,'sa','sqladmin'  
      GO  
  ----------------------------------------------------------------  
  后面的部分已经不属于存储过程  
   
      --这里执行数据导入操作  
      exec   sp_droplinkedsrvlogin   'Remote_Server',null  
          EXEC   sp_dropserver   'Remote_Server'Top

8 楼zjcxc(邹建)回复于 2003-09-02 11:53:43 得分 5

如果你在存储过程设计器中书写,那就肯定会错,因为go只能在查询分析器中使用,代表一个批处理结束.  
   
   
  按照我理解的意思,你应该删除goTop

9 楼leimin(黄山光明顶)回复于 2003-09-02 12:36:42 得分 5

EXEC   sp_addlinkedserver    
        'Remote_Server',    
        '',    
        'MSDASQL',  
        NULL,  
        NULL,  
        'DRIVER={SQL   Server};SERVER=DEV-DC   ;UID=sa   ;PWD=sqladmin;'  
      EXEC   sp_addlinkedsrvlogin     'Remote_Server','false'   ,NULL,'sa','sqladmin'  
  最好不要在stored   procedure中写,你可以写一个*.SQL的脚本,然后通过ISQL来执行。Top

10 楼flysnowjava(大象~大象~鼻子长 )回复于 2003-09-02 14:33:47 得分 0

20多个远程的数据库服务器每个里面4个表的数据要  
  集中到总部服务器上  
  总部服务器上表中存放着每个机器名和用户名密码  
  我想循环执行一个存储过程把数据导入总部的机器  
  做个JOB存储过程要每个周一自动运行一下Top

11 楼flysnowjava(大象~大象~鼻子长 )回复于 2003-09-02 14:34:41 得分 0

在线等待,立即给分!!!Top

12 楼flysnowjava(大象~大象~鼻子长 )回复于 2003-09-02 15:02:38 得分 0

在线等待,立即给分Top

13 楼zjcxc(邹建)回复于 2003-09-02 16:39:43 得分 5

创建下面的存储过程进行数据处理:  
  create   proc   p_merg  
  as  
  declare   @srvname   varchar(250),@username   varchar(250),@pwd   varchar(100)  
   
  --定义游标,取得各远程服务器的信息  
  declare   #tb   cursor   for   select   服务器名,用户名,密码   from   保存远程信息的表  
  open   #tb  
  fetch   next   from   #tb   into   @srvname,@username,@pwd  
  while   @@fetch_status=0  
  begin  
  --创建链接服务器  
  exec   sp_addlinkedserver     'Link_server','','SQLOLEDB',@srvname  
  exec   sp_addlinkedsrvlogin   'Link_server','false',null,@username,@pwd  
   
  --数据导入处理,根据你的情况写  
  insert   into   表   select   *   from   Link_server.数据库名..表名  
   
  --数据处理完成后删除链接服务器  
  exec   sp_dropserver   'Link_server','droplogins'  
  fetch   next   from   #tb   into   @srvname,@username,@pwd  
  end  
  close   #tb  
  deallocate   #tb  
   
  go  
   
   
  创建一个JOB,设置每周一执行,JOB的执行语句如下:exec   p_merg  
   
  Top

14 楼leimin(黄山光明顶)回复于 2003-09-02 18:33:29 得分 10

http://expert.csdn.net/Expert/TopicView1.asp?id=2215343Top

15 楼flysnowjava(大象~大象~鼻子长 )回复于 2003-09-03 11:55:18 得分 0

结贴Top

相关问题

  • 如何配置sp_addlinkedserver可以执行远程存储过程
  • sp_detach_db 执行不了!报告找不到存储过程~~~!求助!
  • 存储过程串行执行问题SP1,SP2,Sp3,Sp4,Sp5 均调用 SP,结果是顺序执行?
  • 如何执行sqlserver的存储过程?
  • 存储过程的执行问题?
  • odbc.net怎么执行存储过程?
  • 如何批执行存储过程???
  • 执行存储过程出错 :(
  • 用ADO如何执行存储过程
  • (ADO)--执行存储过程的错误

关键词

  • 服务器
  • 存储过程
  • 执行
  • sa
  • 数据
  • 远程
  • 总部
  • 密码
  • 连接
  • addlinkedserver

得分解答快速导航

  • 帖主:flysnowjava
  • liuruhong
  • liuruhong
  • tj_dns
  • tj_dns
  • liuyun2003
  • txlicenhe
  • zjcxc
  • zjcxc
  • leimin
  • zjcxc
  • leimin

相关链接

  • SQL Server类图书

广告也精彩

反馈

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