存储过程调用不同数据库的数据
存储过程调用不同数据库的数据
在存储过程调用不同数据库的数据该如何做,比如在存储过程名为AAA的存储过程里面调用数据库为hudu1,hudu2,hudu3里面的数据来统计?
在同一台数据库服务器上:
select * from hudu1.dbo.表名
select * from hudu2.dbo.表名
select * from hudu3.dbo.表名
在不同数据库服务器上:
select * from openrowset('SQLOLEDB','sql服务器1';'用户名';'密码',hudu1.dbo.表名)
select * from openrowset('SQLOLEDB','sql服务器2';'用户名';'密码',hudu2.dbo.表名)
select * from openrowset('SQLOLEDB','sql服务器3';'用户名';'密码',hudu3.dbo.表名)
下面的方法可以参考:
方法一:用OPENDATASOURCE 方法去操作异地数据库
declare @i int
set @i=1
select * from OPENDATASOURCE('SQLOLEDB','Data Source=IP地址;User ID=sa;Password=密码').异地数据库名.dbo.表名 A inner join 本地数据库名..表名 B
on A.关联字段=B.关联字段 and A.字段名称=@i
--方法二:如果经常访问或数据量大,建议用链接服务器
--创建链接服务器
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.表名)
错误7405:异类查询要求为连接设置ANSI-NULL和ANSI-WARNNINGS选项,这将确保一致的查询语意,请启用这些选项,然后重新发出查询
解决方法:
SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
GO
CREATE PROCEDURE ....
SQL SERVER存储过程中通过链接服务器访问远程服务器SQL实战
SQLSERVER的开发中,经常会碰到跨物理服务器跨数据库的访问和操作。
下面来分析下在存储过程中创建远程访问的完整例子.
需求: 在A服务器上有Card数据库,Card数据库有存储过程proc_Card;
在B服务器上有AccountDB数据库,AccountDB下有Up_account存储过程。
现在需要在执行proc_Card最后,调用一次Up_account存储过程,以实现不同服,不同数据库的数据同步.
分析: 1. 存储过程中调用存储过程不是问题,
Execute '存储过程名字'
存储过程参数1=参数1的值,
参数2=参数2的值
......
2. 如何在A服上创建对B服务器 SQLSERVER的访问呢?
首先不得不提的是SQLSERVER链接服务器,在sql 2K中 企业管理器===>安全性===>链接服务器.
SQLSERVER2005 or 2008中 Maragement studio 服务器对象==>链接服务器。
这个链接服务器对象是如何来的?
默认情况下会只有本机一个,链接服务器名就是本机机器名,通过系统存储过程Execute sp_helpserver 可以查看,显示为name字段
如何新增链接服务器 ?
A. 通过向导,
1. 右键链接服务器--->新增链接服务器
2. 输入链接服务器名[ 需要访问的服务器的机器名或是IP,如果别名无法解析到,则使用IP ] ,指定服务器类型为SQL SERVER,
3. 在安全性中选择'使用此安全上下文建立连接' 指定需要访问的服务器的SQL 登录账号和密码
4。点确定,刷新链接服务器,则可视配置的链接服务器信息
B. 通过系统存储过程,
建立链接sql server服务器,通常有两种情况:
1. 第一种情况,产品选”sql server”
EXEC sp_addlinkedserver
@server='linkServerName',
@srvproduct = N'SQL Server'
这种情况,@server (linkServerName)就是要链接的sqlserver服务器名或者ip地址。
2.第二种情况,访问接口选“Microsoft OLE DB Provider Sql Server”或“Sql Native Client”
EXEC sp_addlinkedserver
@server=' linkServerName ',
@srvproduct='',
@provider='SQLNCLI',
@datasrc='sqlServerName'
这种情况,@datasrc(sqlServerName)就是要链接的实际sqlserver服务器名或者ip地址。
3.Sql server数据库引擎是通过上面设置的服务器名或者ip地址访问链接服务器,DTC服务也是通过服务器名或者ip地址访问链接服务器,所以要保证数据库引擎和DTC都能通过服务器名或者ip地址访问到链接服务器。
建立了链接,创建了数据库的登录访问:
EXEC sp_addlinkedsrvlogin
'上面创建的链接服务器的别名或是IP', --被访问的服务器别名
'false',
NULL,
'账号', --帐号
'登录密码' --密码
接下来就可以通过链接服务器来访问服务器B的AccountDB库下up_account存储过程了:
Execute [链接服务器别名].库名.dbo.存储过程
工作似乎已经结束了,但此时发现,执行存A服存储过程时会报 '未将[所用到的别名] 服务器配置为可用的RPC' ,如何解决?
很简单,查看链接服务器的选项,将RPC RPC_Out 值由False 改为 TRUE 再调试,成功!
也有情况在这里无法更改,解决方案是:
exec sp_configure 'show advanced options', 1; --默认是0
GO
RECONFIGURE WITH OVERRIDE;
GO
存储过程调用不同数据库的数据_SQL SERVER存储过程中通过链接服务器访问远程服务器SQL实战_SQLSERVER跨平台数据访问
转载于:https://www.cnblogs.com/sandy/archive/2012/11/25/2787766.html
存储过程调用不同数据库的数据相关推荐
- service层调用service层的方法,并切换数据库调用不同数据库获取数据
我这边是的业务需求是:从A库查询到部分数据,返回一个结果集,通过这个结果集的某些字段来查询第二个数据库的数据,然后将两个返回的数据封装到一个list集合里面返回出来!(我还做了动态查询我也一块贴出来给 ...
- 如何完成dedecms外部数据库调用|跨数据库数据调用
第1步:打开网站include\taglib文件夹中找到sql.lib.php文件,并直接复制一些此文件出来,并把复制出来的这个文件重命名为mysql.lib.php. 注:mysql.lib.php ...
- sqlserver 存储过程 C#调用 实现从数据库Get数据
在最近的项目中我想建立一个EFDBfirst的模型但是失败了,生成的edmx中没有实体类和表结构,到处需求解决方案,未果. 问题请见:https://q.cnblogs.com/q/102743/ 后 ...
- 通过数据库存储过程调用Web服务的办法
Web服务概览 Web服务,从广义而言,就是在两个应用或电子设备之间通过万维网通信的方法.Web服务有两种类型:简单对象访问协议(SOAP)以及表述性状态转移(REST). SOAP为基于XML的消息 ...
- php ci ajax用户登录,使用jQuery和CI显示AJAX调用数据库的数据
模型似乎和控制器一样工作. AJAX将结果显示为"null",所以我认为这是因为我们需要将数据作为json发送.如何将数据放到正确的格式,并在视图中显示任何想法使用jQuery和C ...
- mysql存储过程遍历新增_MySQL存储过程:内部调用存储过程、存储过程实现遍历数据库建表以及修改字段...
转载: https://blog.csdn.net/weixin_42159024/article/details/81488788 实现功能: 升级数据库.通过遍历所有数据库,对每个数据库进行升级, ...
- vsc提示只有一行_Solution:连续调用BAPI出错,以及BAPI提示成功但数据库没有数据...
作者:孙亮 声明:本文章仅代表原作者观点,仅用于SAP软件的应用与学习,不代表SAP公司和本微信公众号.注:文中所示截图来源SAP软件,相应著作权归SAP所有. 在群里看大家交流技术问题,曾记下了一条 ...
- java调用gbase存储过程,GBase 8T数据库存储过程使用出参示例
GBase 8T数据库的存储过程支持入参,出参 out ,入出参 inout. 以下以示例说明存储过程的入参,出参,以及使用存储过程调用出参的过程及方法. 1, 创建存储过程 入参.出参. drop ...
- 使用shell脚本调用mysql数据库存储过程,并设置定时任务
本来是要mysql数据库中创建事件任务来,定时执行存储过程,做数据传输的...后来由于种种原因,就使用crontab来定时执行,调用存储过程. 实现这个数据传输分为两步: 第一步:编写shell脚本调 ...
最新文章
- ORM映射框架总结--数据操作(五)
- java百度云推送demo_百度云推送java服务端maven安装完整demo
- Nhibernate 三种配置方式
- django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)...
- linux nona怎么用_nano命令_Linux nano 命令用法详解:字符终端文本编辑器
- [渝粤教育] 西南科技大学 机械工程测试技术 在线考试复习资料
- laravel常用拓展库
- 【编程软件】keli烧录代码点击Download或者Debug界面卡死
- 酒店管理系统-概要设计说明书
- 任务调度:分布式调度引擎-DAGScheduleX简介
- Eureka源码深度刨析-(5)EurekaServer处理服务发现
- H5实现点击图片放大功能
- java根据模板导出pdf
- 求职简历中一些常见的问题
- Markdown合并表格单元格
- 异常检测方法——DBSCAN、孤立森林、OneClassSVM、LOF、同比环比、正态分布、箱线图
- RTP协议学习大总结从原理到代码
- 大学生“挑战杯”创业计划大赛财务分析估算方法与技巧【转】
- 18天1000万次迭代,AI生成的照片你能分辨真假吗?
- PAT 1070 结绳