SQL Server 跨服务器 不同数据库之间复制表的数据
不同数据库之间复制表的数据的方法:
当表目标表存在时:
insert into 目的数据库..表 select * from 源数据库..表
当目标表不存在时:
select * into 目的数据库..表 from 源数据库..表
--如果在不同的SQL之间:
insert into openrowset('sqloledb','目的服务器名';'sa';'',目的数据库.dbo.表)
select * from 源数据库..表
-- 创建链接服务器
exec sp_addlinkedserver ' ITSV ' , ' ' , ' SQLOLEDB ' , ' 远程服务器名或ip地址 '
exec sp_addlinkedsrvlogin ' ITSV ' , ' false ' , null , ' 用户名 ' , ' 密码 '
-- 查询示例
select * from ITSV.数据库名.dbo.表名
-- 导入示例
select * into 表 from ITSV.数据库名.dbo.表名
-- 以后不再使用时删除链接服务器
exec sp_dropserver ' ITSV ' , ' droplogins '
-- 连接远程/局域网数据(openrowset/openquery/opendatasource)
-- 1、openrowset
-- 查询示例
select * from openrowset ( ' SQLOLEDB ' , ' sql服务器名 ' ; ' 用户名 ' ; ' 密码 ' ,数据库名.dbo.表名)
-- 生成本地表
select * into 表 from openrowset ( ' SQLOLEDB ' , ' sql服务器名 ' ; ' 用户名 ' ; ' 密码 ' ,数据库名.dbo.表名)
-- 把本地表导入远程表
insert openrowset ( ' SQLOLEDB ' , ' sql服务器名 ' ; ' 用户名 ' ; ' 密码 ' ,数据库名.dbo.表名)
select * from 本地表
-- 更新本地表
update b
set b.列A = a.列A
from openrowset ( ' SQLOLEDB ' , ' sql服务器名 ' ; ' 用户名 ' ; ' 密码 ' ,数据库名.dbo.表名) as a inner join 本地表 b
on a.column1 = b.column1
-- openquery用法需要创建一个连接
-- 首先创建一个连接创建链接服务器
exec sp_addlinkedserver ' ITSV ' , ' ' , ' SQLOLEDB ' , ' 远程服务器名或ip地址 '
-- 查询
select *
FROM openquery (ITSV, ' SELECT * FROM 数据库.dbo.表名 ' )
-- 把本地表导入远程表
insert openquery (ITSV, ' SELECT * FROM 数据库.dbo.表名 ' )
select * from 本地表
-- 更新本地表
update b
set b.列B = a.列B
FROM openquery (ITSV, ' SELECT * FROM 数据库.dbo.表名 ' ) as a
inner join 本地表 b on a.列A = b.列A
-- 3、opendatasource/openrowset
SELECT *
FROM opendatasource ( ' SQLOLEDB ' , ' Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta
-- 把本地表导入远程表
insert opendatasource ( ' SQLOLEDB ' , ' Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).数据库.dbo.表名
select * from
注意:某些时候会出现未开启Ad Hoc,使用下面的语句开启使用
启用Ad Hoc Distributed Queries:
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
使用完成后,关闭Ad Hoc Distributed Queries:
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure
-----------------------------------------------------------------------------------------------------------------------------------
好吧,如果上面看得烦下面有个更容易理解的例子:
Exec sp_droplinkedsrvlogin DBVIP,Null
Exec sp_dropserver DBVIP
EXEC sp_addlinkedserver
@server='DBVIP',--被访问的服务器别名
@srvproduct='',
@provider='SQLOLEDB',
@datasrc='Server2' --要访问的服务器
EXEC sp_addlinkedsrvlogin
'DBVIP', --被访问的服务器别名
'false',
NULL,
'sa', --帐号
'thankyoubobby' --密码
Select * from DBVIP.pubs.dbo.orders
/////////////////////////////ORACLE////////////////////////////
Exec sp_droplinkedsrvlogin demo,Null
Exec sp_dropserver demo
go
EXEC sp_addlinkedserver
@server ='demo',
@srvproduct='Oracle',
@provider='MSDAORA',
@datasrc='ServiceName'
EXEC sp_addlinkedsrvlogin
'demo',
'false',
NULL,
'userid',
'password'
go
SELECT * FROM OPENQUERY(demo ,'select * from tbdemo' )
UPDATE OPENQUERY (demo, 'SELECT id FROM tbdemo WHERE id = 101')
SET name = 'hello';
INSERT OPENQUERY (demo, 'SELECT id FROM tbdemo')
VALUES ('hello');
DELETE OPENQUERY (demo, 'SELECT id FROM tbdemo WHERE name = ''hello''');
-------------------------------------------具体例子------------------------------------------------------------
if exists(select 1 from master.dbo.sysservers where srvname = 'test')
begin
exec sp_droplinkedsrvlogin 'test','sa'
exec sp_dropserver 'test'
end
--建立连接服务器
EXEC sp_addlinkedserver 'test', 'ms','SQLOLEDB', '192.168.1.99'
exec sp_addlinkedsrvlogin 'test','false',null,'sa',''
select * from test.db_film.dbo.T_film
go
if exists(select 1 from master.dbo.sysservers where srvname = 'test')
begin
exec sp_droplinkedsrvlogin 'test','sa'
exec sp_dropserver 'test'
end
go
方法二:
1、新建一个连接服务器,连接到你要导入的服务器的IP地址(或者机器名)
2、点击安全性,使用此安全上下文建立连接,输入数据库服务器的用户名和密码
3、选择要导出的数据库,使用如下sql导数据:
select * into laobao from [10.180.116.121].ynpdeicp.dbo.LaoBao
Sql解释:
select 要导入的字段 into 要导入的数据表 from [IP地址].数据库名.dbo.数据表名
SQL Server 跨服务器 不同数据库之间复制表的数据的更多相关文章
- SQL Server跨服务器操作数据库
今天给大家来分享一下跨服务器操作数据库,还是以SQL Server的管理工具(SSMS)为平台进行操作. 什么是跨服务器操作? 跨服务器操作就是可以在本地连接到远程服务器上的数据库,可以在对方的数据库 ...
- SQL Server跨服务器的数据库迁移
1. 使用sql server task中back up 任务,保存为*.bak 文件. 2. 在另一个server中restore database,如果已经存在这个database,会覆盖之前的数 ...
- 问题:sqlserver 跨服务器连接;结果:Sql Server 跨服务器连接
Sql Server 跨服务器连接 用openrowset连接远程SQL或插入数据 --如果只是临时访问,可以直接用openrowset --查询示例 select * from openrowset ...
- SQL Server跨服务器建立视图
create view View_AppCus as select dwmch,zjm from ksoa.dbo.mchk SQL Server跨服务器操作经常需要用到,下面就为你介绍的是SQL S ...
- SQL Server跨服务器查询的实现方法,OpenDataSource
SQL Server跨服务器查询的方法我们经常需要用到,下面就为您介绍两种SQL Server跨服务器查询的方法,如果您感兴趣的话,不妨一看. SQL Server跨服务器查询方法一:用OPENDAT ...
- Sql Server 跨服务器连接
用openrowset连接远程SQL或插入数据 --如果只是临时访问,可以直接用openrowset --查询示例 select * from openrowset('SQLOLEDB', 'sql服 ...
- Sql Server 导入还有一个数据库中的表数据
在涉及到SQL Server编程或是管理时一定会用到数据的导入与导出, 导入导出的方法有多种,此处以SQL Server导入表数据为例.阐述一下: 1.打开SQL Server Management ...
- SQL Server 跨服务器、跨版本使用复制 (2008、2012)
在两台不同的服务器间实现SQL Server 的发布和订阅,需要一些设置. 测试环境:2008数据库.2012数据库,可实现跨版本发布订阅 本次测试是08的数据库做发布端 ,使用08数据及12数据库均 ...
- SQL Server不同服务器不同数据库间的操作
什么是跨服务器操作? 跨服务器操作就是可以在本地连接到远程服务器上的数据库,可以在对方的数据库上进行相关的数据库操作,比如增删改查. 为什么要进行跨服务器操作 随着数据量的增多,业务量的扩张,需要在不 ...
随机推荐
- 扫描类APP推荐
扫描全能王 (com.intsig.camscanner) - 5.10.0.20190426 - 应用 - 酷安网 应该是手机上最好的扫描类 APP 了,没有之一.只是因为付费太贵. 感谢酷安评论区 ...
- Java类集框架——List接口
学习目标 掌握List接口与Collection接口的关系. 掌握List接口的常用子类:ArrayList.Vector. 掌握ArrayList与Vector类的区别. Collection ...
- CSU 1808 地铁 (Dijkstra)
Description Bobo 居住在大城市 ICPCCamp. ICPCCamp 有 n 个地铁站,用 1,2,-,n 编号. m 段双向的地铁线路连接 n 个地铁站,其中第 i 段地铁属于 ci ...
- 南京网络赛B-The writing on the wall
30.43% 2000ms 262144K Feeling hungry, a cute hamster decides to order some take-away food (like frie ...
- opencv学习笔记——图像缩放函数resize
opencv提供了一种图像缩放函数 功能:实现对输入图像缩放到指定大小 函数原型: void cv::resize ( InputArray src, OutputArray dst, Size ds ...
- Pycharm一直报ImportError: No module named requests
1.首先检查是否安装了requests l 安装命令:pip install requests如果出现了Requirement already satisfied 代表安装成功 2.系统含有多个版本的 ...
- 七夕节---hdu1215(打表求因子和)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1215 给你一个数n(1<=n<=50w)求n的所有因子和, 由于n的范围比较大,所以要采用 ...
- RabbitMQ(转)
add by zhj: 如果用Python,那可以用celery,它是一个分布式任务队列,它的broker可以选择Rabbitmq/Redis/Mongodb等, celery通过Kombu这个lib ...
- 表单(下)-EasyUI Spinner 微调器、EasyUI Numberspinner 数值微调器、EasyUI Timespinner 时间微调器、EasyUI Slider 滑块
EasyUI Spinner 微调器 扩展自 $.fn.validatebox.defaults.通过 $.fn.spinner.defaults 重写默认的 defaults. 微调器(spinne ...
- tcp/udp/socket 端口映射,转发小工具
1) 利用 Python 的 Socket 端口转发,用于远程维护 https://github.com/knownsec/rtcp 2) 反向端口转发工具 Reverse TCP Port to U ...