CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  应用实例

高分求教: 如何在 数据库A 的存储过程中 对 数据库B 插入数据

楼主arrow_gx(8088的脑袋)2005-07-01 14:50:00 在 MS-SQL Server / 应用实例 提问

高分求教:   如何在   数据库A   的存储过程中   对   数据库B   插入数据  
   
  数据库   A   和   数据库B     在同一个局域网里面不同的服务器上  
   
  有可能实现吗??   最好能简单的给几句代码 问题点数:200、回复次数:13Top

1 楼paoluo(一天到晚游泳的鱼)回复于 2005-07-01 15:06:56 得分 100

--创建链接服务器  
  exec   sp_addlinkedserver     'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'  
  exec   sp_addlinkedsrvlogin   'srv_lnk','false',null,'用户名','密码'  
  go  
   
  --查询示例  
  select   *   from   srv_lnk.数据库名.dbo.表名  
   
  --导入示例  
  select   *   into   表   from   srv_lnk.数据库名.dbo.表名  
   
  go  
  --以后不再使用时删除链接服务器  
  exec   sp_dropserver   'srv_lnk','droplogins'  
   
   
  --如果只是临时访问,可以直接用openrowset  
  --查询示例  
  select   *   from   openrowset('SQLOLEDB'  
  ,'sql服务器名';'用户名';'密码'  
  ,数据库名.dbo.表名)  
   
   
  --导入示例  
  select   *   into   表   from   openrowset('SQLOLEDB'  
  ,'sql服务器名';'用户名';'密码'  
  ,数据库名.dbo.表名)Top

2 楼hsj20041004(光芒)回复于 2005-07-01 15:11:03 得分 10

首先建立连接服务器,把俩个数据库连接起来   。假定连接服务名为aaa  
  dbo为所有者名  
  try!  
  insert   into   aaa.dbo.table1   select   *   from   bbb.dbo.table1  
  Top

3 楼arrow_gx(8088的脑袋)回复于 2005-07-01 15:12:06 得分 0

试试,可以马上给分,哈哈,原来这么容易,看来,基本功还是不够好Top

4 楼echoxue(咱当过兵的人)回复于 2005-07-01 15:58:47 得分 10

高深的问题  
  学习再学习!!!!!!!!!!!!Top

5 楼Yisa()回复于 2005-07-01 15:59:00 得分 0

Please   try   it.  
   
  insert   into   openrowset('sqloledb','B服務器名';'sa';'密碼',   B庫名.dbo.B表)select   *   from   A庫名.dbo.A表名  
   
  Top

6 楼arrow_gx(8088的脑袋)回复于 2005-07-01 17:38:27 得分 0

不行啊,在存储过程里面用到了事务,就会出现以下错误,如何解决??  
   
   
  该操作未能执行,因为   OLE   DB   提供程序   'SQLOLEDB'   无法启动分布式事务。  
  [OLE     provider   returned   message:   新事务不能登记到指定的事务处理器中。   ]  
  OLE   DB   错误跟踪[OLE     Provider   'SQLOLEDB'   ITransactionJoin::JoinTransaction   returned   0x8004d00a]。  
  Top

7 楼paoluo(一天到晚游泳的鱼)回复于 2005-07-01 17:44:36 得分 0

那就不建链接服务器,直接这样插入呢??  
   
  insert   into   A.dbo.table1   select   *     from   openrowset('SQLOLEDB'  
  ,'sql服务器名';'用户名';'密码'  
  ,B.dbo.table1   )Top

8 楼Frewin(frewin)回复于 2005-07-01 17:51:47 得分 10

select   *   from   openrowset('SQLOLEDB'  
  ,'sql服务器名';'用户名';'密码'  
  ,数据库名.dbo.表名)Top

9 楼631799(杭州工人)回复于 2005-07-01 18:01:20 得分 50

用到分布式事务时,要用'MSDASQL'代替'SQLOLEDB'。  
   
  set     XACT_ABORT   on  
  set   ANSI_NULL_DFLT_ON   on  
  set   ANSI_WARNINGS   on    
  BEGIN   DISTRIBUTED   TRANSACTION  
  select   *     from   OPENDATASOURCE('MSDASQL',--这里不能用SQLOLEDB  
  'DRIVER={SQL   Server};SERVER=192.168.2.1;UID=sa;PWD=ruirui;').pubs.dbo.jobs  
  commit   tranTop

10 楼skywebnet(小苯)回复于 2005-07-02 09:46:25 得分 5

使用   链接服务器   就可实现楼主的需求,实现方式楼上都……Top

11 楼hsj20041004(光芒)回复于 2005-07-02 10:19:05 得分 5

你不要用语句建立链接服务器  
  手动在企业管理器中建立。  
  再进行操作。Top

12 楼gmc007(江西的佬表)回复于 2005-07-02 10:31:00 得分 5

没试过,不敢乱说:)Top

13 楼sxycgxj(云中客)回复于 2005-07-02 10:36:30 得分 5

--创建链接服务器  
  --查询示例  
  select   *   from   srv_lnk.数据库名.dbo.表名  
  --导入示例  
  select   *   into   表   from   srv_lnk.数据库名.dbo.表名  
  Top

相关问题

  • 使用存储过程插入数据库出现乱码
  • 如何在java中把一个存储过程插入到数据库
  • 如何把大于8000的字符串用存储过程插入数据库
  • 如何把大于8000的字符串用存储过程插入数据库
  • 数据库存储过程!?
  • 请问如何在 数据库A的存储过程中去访问数据库B的表啊?
  • 某一个数据库a的存储过程,怎么样去打开数据库B的数据表
  • 如何用VB语名创建SQL-Server存储过程(插入记录)、创建访问数据库的用户
  • 字符串的对比,然后插入到数据库中,求一个存储过程
  • [求助]如何调用一个存储过程向数据库中插入多条记录??

关键词

  • 数据库
  • 服务器
  • 存储过程
  • 密码
  • 查询
  • 用户
  • 连接
  • sql
  • 示例
  • sqloledb

得分解答快速导航

  • 帖主:arrow_gx
  • paoluo
  • hsj20041004
  • echoxue
  • Frewin
  • 631799
  • skywebnet
  • hsj20041004
  • gmc007
  • sxycgxj

相关链接

  • SQL Server类图书

广告也精彩

反馈

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