sql 跨服务器查询数据
方法一:用OPENDATASOURCE
[SQL SERVER] 跨服务器查询
--1 打开
exec sp_configure 'show advanced options',1 reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1 reconfigure SELECT * FROM
OPENDATASOURCE(
'SQLOLEDB',
'Data Source=192.168.0.88;User ID=sa;Password=Sa123456'
).AIS20141027173850.dbo.t_ICItem --2 关闭
exec sp_configure 'Ad Hoc Distributed Queries',0 reconfigure
exec sp_configure 'show advanced options',0 reconfigure
--下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。同样在执行前要向上面一样打开配置
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\test.xls";User ID=sa;Password=sa;Extended properties=Excel 5.0')...xactions
方法二:用链接服务器
-- ---B.创建链接服务器
--exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
--exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
--exec sp_serveroption 'srv_lnk','rpc','true'
--exec sp_serveroption 'srv_lnk','rpc out','true' --这个允许调用链接服务器上的存储过程
DECLARE @serverName VARCHAR(20)
SET @serverName = '127.0.0.1'
IF NOT EXISTS ( SELECT 1
FROM master.dbo.sysservers
WHERE srvname = @serverName )
BEGIN
---用SQL命令建立与本Server的Linked Server.
EXEC sp_addlinkedserver @serverName, '', 'SQLOLEDB', '127.0.0.1'
EXEC sp_addlinkedsrvlogin @serverName, 'false', NULL, 'sa', ''
EXEC sp_serveroption @serverName, 'rpc', 'true'
EXEC sp_serveroption @serverName, 'rpc out', 'true' --这个允许调用链接服务器上的存储过程
--EXEC sp_dropserver @serverName,'droplogins' --删除链接服务器 END --调用
INSERT INTO #tmp02
EXEC [127.0.0.1].AIS20160331212903.dbo.rk_fm_proc_cg_inner @year,@month ,@deptName
方法三:用程序分别连接两个数据库实现
此方法在实际应用中比较普遍,也较简单;
其它方法:OPENROWSET、OPENQUERY
与上面的类似,不再累述。
----------------------------------
VBA中的实现也是类似的:
Function saveBeg(sheetName As String, tabName As String, fieldNames As String, sqlWhere As String) As Boolean
Dim Str_coon As String, StrSQL As String, sqlCon As String
If (connStr = "") Then
SetK3SqlConn
End If sqlCon = getOdbcConn Rem 添加Excel数据到SQLSERVER:成功
Str_coon = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;HDR=yes';Data Source =" & ThisWorkbook.FullName '//OFFICE2007
StrSQL = "INSERT into "
' StrSQL = StrSQL & " [odbc;Driver={SQL Server};" '//在空格+[:后面是固定格式
' StrSQL = StrSQL & "Server=JUST;" '//服务器名称或地址
' StrSQL = StrSQL & "Database=AIS20160331212903;" '//数据库名称
' StrSQL = StrSQL & "UID=sa;PWD=Sa123456]" '//用户名,密码]
StrSQL = StrSQL & sqlCon
StrSQL = StrSQL & "." & tabName
' StrSQL = StrSQL & " SELECT 会计期间 as FPeriodName,部门代码 as FDeptNumber FROM [" & sheetName & "$]"
StrSQL = StrSQL & " SELECT " & fieldNames & " FROM [" & sheetName & "$] where 1=1"
StrSQL = StrSQL & sqlWhere
saveBeg = ExecSqlUpdateOrInsert(StrSQL, Str_coon)
Dim d As String
d = "dd" End Function '*****************************************************************************************
'函数名: ExecSqlUpdateOrInsert
'函数功能: 执行SQL语句,一般为添加、修改删除语句
'返回值: 返回一个布尔值,是否成功完成
'参数1: StrSQL 字符类型 SQL查询语句
'参数2: Str_coon 字符类型 链接语句
'使用方法: StrSQL=“update [sheet1$i8:i9] set f1='Your Pleasure”
' StrSQL="insert into [sheet1$k2:l6] (f1,f2) values (9,'mine')"
' Bool_1= ExecSqlUpdateOrInsert(StrSQL, Str_coon)
'*****************************************************************************************
Function ExecSqlUpdateOrInsert(ByVal StrSQL As String, ByVal Str_coon As String) As Boolean '//执行SQL语句,一般为添加、修改删除语句
'On Error Resume Next ' 改变错误处理的方式。
Err.Clear
If StrSQL = "" Then ExecSqlUpdateOrInsert = False: Exit Function
Set CN = CreateObject("Adodb.Connection") '//新建一个ADO连接
Set rs = CreateObject("adodb.recordset")
CN.Open Str_coon
CN.Execute (StrSQL)
If Err.Number <> Then ExecSqlUpdateOrInsert = False Else ExecSqlUpdateOrInsert = True
CN.Close '//关闭ADO连接
Set rs = Nothing
Set CN = Nothing '//释放内存
End Function
'*****************************************************************************************
sql 跨服务器查询数据的更多相关文章
- SQL跨服务器查询数据库
有时候一个项目需要用到两个数据库或多个数据库而且这些数据库在不同的服务器上时,就需要通过跨服务器查找数据 在A服务器的数据库a查询服务器B的数据库b 的bb表 假如服务器B的IP地址为:10.0.22 ...
- sql 跨服务器查询
创建链接服务器 exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' exec sp_addlinkedsrvlogin ...
- SQl 跨服务器查询脚本示例
1.采用OPENDATASOURCE select top 10 *from OPENDATASOURCE('SQLOLEDB','Data Source=IP地址;User ID=连接用户名称;Pa ...
- PL/SQL跨库查询数据
步骤一:找到Database links (新建) 步骤二:正确填写完对应信息 (应用) : 步骤三:执行PL/SQL语句(完成) select * from tablename@MYDATA 注释 ...
- 跨服务器导入数据SQL语句及其问题解决方案
--跨服务器导入数据SQL语句: insert into [shsw_manager].[dbo].[Station_List]select * from OPENROWSET('SQLOLEDB', ...
- 缓存一致性和跨服务器查询的数据异构解决方案canal
当你的项目数据量上去了之后,通常会遇到两种情况,第一种情况应是最大可能的使用cache来对抗上层的高并发,第二种情况同样也是需要使用分库 分表对抗上层的高并发...逼逼逼起来容易,做起来并不那么乐观, ...
- SQL Server跨服务器查询的实现方法,OpenDataSource
SQL Server跨服务器查询的方法我们经常需要用到,下面就为您介绍两种SQL Server跨服务器查询的方法,如果您感兴趣的话,不妨一看. SQL Server跨服务器查询方法一:用OPENDAT ...
- sqlserver 两 表 数据 复制 (附加 跨服务器 查询的方法)
一 : 这个sql 语句 可以快速的 将 一 个旧表 中的指定字段的数据 复制到 另一个新表的指定字段中 insert into dbo.Customer ( CustomerId , Custome ...
- 跨服务器查询sql语句样例
若2个数据库在同一台机器上:insert into DataBase_A..Table1(col1,col2,col3----)select col11,col22,col33-- from Data ...
随机推荐
- Final版本互评——杨老师粉丝群《PinBall》
基于NABCD评论作品,及改进建议 1.根据(不限于)NABCD评论作品的选题 (1)N(Need,需求) 随着民族自信的觉醒,民主文化越来越受到重视,语文在高考中的比重也不断增加,在这种大环境下,成 ...
- ajax请求超时判断(转载)
ajax请求时有个参数可以借鉴一下 var ajaxTimeOut = $.ajax({ url:'', //请求的URL timeout : 1000, //超时时间设置,单位毫秒 type : ' ...
- 《Linux内核设计与实现》第18章读书整理
第十八章.调试 18.1 准备开始 如果bug能重现的话,将会有很大的帮助. 18.2 内核中的bug Bug多种多样,产生的原因可以有无数的原因,表象也变化多端. 从隐藏在源代码中的错误到展现在目击 ...
- 第三周:构造一个简单的LINUX系统MENUOS
吕松鸿 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.Linux内 ...
- 《Linux内核设计与实现》第五章读书笔记
第五章 系统调用 5.1与内核通信 1. 系统调用 让应用程序受限的访问硬件设备 提供创建新进程并与已有进程通信的机制 提供申请操作系统其他资源能力是用户空间进程和硬件设备之间的中间层 2. 系统调 ...
- C语言版本:顺序表的实现
seqlist.h #ifndef __SEQLIST_H__ #define __SEQLIST_H__ #include<cstdio> #include<malloc.h> ...
- Four-Operations
开发环境:Eclipse 结对小伙伴:201306114416 陈键 (http://www.cnblogs.com/be-the-one/) 201306114452 吴舒婷 (http://www ...
- 团队作业4——WBS练习
一.作业要求 对团队项目进行任务分解 要求所有人共同参与 队长列出需求 成员进行估计 队长领导大家达成共识 形成团队报告,发至团队博客 注意:分解的粒度最小不应超过6小时(即一个人在6小时以内能够完 ...
- Delphi中如何实现模拟组合按键,如发送Ctrl+F的按键
利用 keybd_event函数可实现,如下面的代码用以实现在一个公共菜单中模拟Ctrl_F按钮以调用DBGridEH的查找对话框功能:这是在一个ActionList中的某一Action的OnExec ...
- 深入理解ajax系列第八篇——表单提交
前面的话 在以前,网站的用户与后端交互的主要方式是通过HTML表单的使用.表单的引入在1993年,由于其简单性和易用性,直到电子商务出现之前一直保持着重要位置.理解表单提交,对于更深入地理解ajax是 ...