不同服务器数据库之间的数据操作
不同数据库之间复制表的数据的方法:
当表目标表存在时:
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 '
-----------------------------------------------------------------------------------------------------------------------------------
好吧,如果上面看得烦下面有个更容易理解的例子:
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
-------------------------------------------具体例子------------------------------------------------------------
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