博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sqlserver 数据交互(将数据库A表A中的数据插入到数据库B中的表B)
阅读量:5315 次
发布时间:2019-06-14

本文共 2863 字,大约阅读时间需要 9 分钟。

--DECLARE 

  /*=================================================================================================================*/
  /*链接服务器的自定义虚拟名*/
  declare @linkedservervrName nvarchar(1000)
  set @linkedservervrName='DB_LinkedServer'
  /*链接服务器*/
  exec sp_addlinkedserver @linkedservervrName,'ms','SQLOLEDB','服务器名称'
  /*映射链接服务器的登陆映射*/
  exec sp_addlinkedsrvlogin @linkedservervrName,'false',null,'sa','密码'

 

/*=================================================================================================================*/

  /*链接服务器(即:中间库)是否成功*/
  BEGIN TRY
     EXEC sp_testlinkedserver  @linkedservervrName
     --写入日志
     set @strLogMessage='['+CONVERT(varchar(100), GETDATE(), 120) +']'+'中间库连接成功'
     insert into [SH_ReceivableSystem_Log_all] values(@strLogMessage)   
  END TRY
  BEGIN CATCH
   --写入日志
     set @strLogMessage='['+CONVERT(varchar(100), GETDATE(), 120) +']'+'中间库连接失败:'
     insert into [SH_ReceivableSystem_Log_all] values(@strLogMessage+ERROR_MESSAGE())   
   /*删除:映射链接服务器的登陆映射*/
   EXEC sp_droplinkedsrvlogin @linkedservervrName, NULL;
   
   /*删除:链接服务器*/
   exec sp_dropserver @linkedservervrName,null;
     /*返回日志信息*/
   select * from [SH_ReceivableSystem_Log_all]
    /*停止*/   
     return;    
  END CATCH;

 

BEGIN TRY

    exec sp_configure 'show advanced options',1 
   reconfigure 
   exec sp_configure 'Ad Hoc Distributed Queries',1 
   reconfigure 
   select * from openrowset('SQLNCLI','Server=服务器名称(IP);PWD=密码;UID=sa;','select * from 数据库B.dbo.表B')
   --写入日志
     DECLARE @ekkoXMLDoc int
     EXEC sp_xml_preparedocument @ekkoXMLDoc OUTPUT, @xmlinfo   --通过xml解析数据可以大批量插入数据
     INSERT INTO  [dbo.表B]([销售单据号],[发票类型],[税率],[客户名称],[商品编码],[商品名称],[含税金额],   --插入数据
     [规格型号],[计量单位],[销售数量],[备注])
     SELECT MainID,fapiaoType,Taxrate,customName,kaiPiaoCode,kaPiaoName,kaiPiaoMoney,guigeXinghao,jiliangDanWei,saleCount,RemarkAll
     FROM OPENXML(@ekkoXMLDoc, '/root/record',2)
     WITH
     (
      MainID VARCHAR(50),
      fapiaoType VARCHAR(50),
      Taxrate  numeric(14, 2),
      customName VARCHAR(50),
      kaiPiaoCode VARCHAR(50),
      kaPiaoName VARCHAR(50),
      kaiPiaoMoney numeric(14, 2),
      guigeXinghao VARCHAR(50),
      jiliangDanWei VARCHAR(50),
      saleCount numeric(14, 2),
      RemarkAll VARCHAR(50)
     )
     EXEC sp_xml_removedocument @ekkoXMLDoc
    insert openrowset('SQLNCLI','Server=服务器名称(IP);PWD=密码;UID=sa;','select * from 数据库B.dbo.表B')  select *from 表A
     set @strLogMessage='['+CONVERT(varchar(100), GETDATE(), 120) +']向中间库‘表插入信息,成功。'
     insert into [SH_ReceivableSystem_Log_all] values(@strLogMessage) 
     /*删除:映射链接服务器的登陆映射*/
   EXEC sp_droplinkedsrvlogin @linkedservervrName, NULL;
   
   /*删除:链接服务器*/
   exec sp_dropserver @linkedservervrName,null;
     
  END TRY

 

 

备注:

1、从数据库A表A数据连接到数据库B表B时,数据库连接必须能正常连接通畅,否则在执行时无法正常通过

2、如果在执行时报“SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。”

就单独执行:exec sp_configure 'show advanced options',1  

 

转载于:https://www.cnblogs.com/LuckZ/p/3578070.html

你可能感兴趣的文章
Scala for the Impatients---(10)Traits
查看>>
简单的姓名号码查询系统
查看>>
PostgreSQL 保留关键字添加方法之一,不带参数的函数
查看>>
你的博客可能被爬了
查看>>
赛前热手 (天梯赛暴力题)
查看>>
.net 冒泡排序示例
查看>>
Uva(10330)
查看>>
vlan学习
查看>>
R-Sys.time计算程序运行时间
查看>>
Java类模板
查看>>
【转贴】SAP HANA内存数据库详解
查看>>
二分查找BinarySearch(Java)
查看>>
两种应该掌握的排序方法--------1.shell Sort
查看>>
vuejs动态组件给子组件传递数据
查看>>
javascript constrator and prototype
查看>>
杭电2065(递推)红色病毒
查看>>
No Language-Support in system setting ,Ubuntu
查看>>
spring 实现测试解耦
查看>>
Python学习笔记第二十一周
查看>>
js 获取视频的第一帧
查看>>