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 ...
随机推荐
- 蓝牙BLE实用教程(转载)
欢迎使用 小书匠(xiaoshujiang)编辑器,您可以通过 设置 里的修改模板来改变新建文章的内容. 1.蓝牙BLE常见问答 Q: Smart Ready 和 Smart 以及传统蓝牙之间是什么关 ...
- SQLite与ContentProvider
http://www.rom007.com/SQLite-yu-ContentProvider.html 在Android中,对于数据的存贮,有几种方式,有文件方式,有文件式数据库方式,Android ...
- week4
History:Commercialization and Growth course Explosive Growth of the Internet and Web The Year of the ...
- CentOS 简单学习 firewalld的使用
1. centos7 开始 使用firewalld 代替了 iptables 命令工具为 firewall-cmd 帮助信息非常长,简单放到文末 2. 简单使用 首先开启 httpd 一般都自带安装了 ...
- Android 获取加速传感器的值,并去除杂音
1.注册和注销传感器 private void registerSensor() { manager.registerListener(this, manager.getDefaultSensor(S ...
- hexo d 报错‘fatal: could not read Username for 'https://github.com': No error’
问题描述 今天早上,一如往常的往在github上创建的hexo博客上传文章,结果报错 'fatal: could not read Username for 'https://github.com': ...
- 远程显示(操作) 服务器 GUI 程序(图形化界面) (基于 X11 Forwarding + Centos + MobaXterm)
在做 数据分析(数据挖掘 或 机器学习)的时候,我们经常需要绘制一些统计相关的图表,这些统计.绘图的程序常常是跑在服务器上的,可是服务器出于性能和效率的考虑,通常都是没有安装图形化界面的,于是这些统计 ...
- hdu6444 Neko's Loop
要想A一道题,你需要正版ide,正版草稿纸,正版键盘,正版双手,但最重要的是正版大脑.(改编自wxf在微积分群的吐槽) 分析一下题意,选的所有数的下标模gcd(n,k)都是同余的,而且是在所有同余的下 ...
- ubuntu系统创建新用户并赋予sudo权限
1.创建新用户 创建新用户有两种方式:adduser和useradd adduser会为用户创建組./home目录下同名文件夹,密码,而useradd不会 因此推荐使用adduser创建用户,例: s ...
- 【BZOJ1047】[HAOI2007]理想的正方形(单调队列,动态规划)
[BZOJ1047][HAOI2007]理想的正方形(单调队列,动态规划) 题面 BZOJ 洛谷 题解 直接一个单调队列维护一下没给点和它前面的\(n\)个位置的最大值,再用一次单调队列维护连续\(n ...