sql脚本连接多个数据库

时间:2021-09-06 21:59:44
现在遇到这样一个问题,请指点

从一个服务器的数据库取数据,加工一下,导入到另一个服务器上的数据库,要写在一段sql脚本里,怎么能同时连接这两个服务器上的数据库?

谢谢!!!

9 个解决方案

#1


做链接服务器
代码等楼下

#2


跨实例连接,代码交给楼下

#3


--不同服务器数据库之间的数据操作
--************************************************************************************
1、--创建链接服务器 
exec sp_addlinkedserver   'ITSV', ' ', 'SQLOLEDB', '远程服务器名或ip地址 ' 
exec sp_addlinkedsrvlogin  'ITSV', 'false ',null, '用户名', '密码' 


2、启动两台服务器的MSDTC服务 
MSDTC服务提供分布式事务服务,如果要在数据库中使用分布式事务,必须在参与的双方服务器启动MSDTC(Distributed Transaction Coordinator)服务。

3、打开双方的135端口
MSDTC服务依赖于RPC(Remote Procedure Call (RPC))服务,RPC使用135端口,保证RPC服务启动,如果服务器有防火墙,保证135端口不被防火墙挡住。
使用“telnet IP 135”命令测试对方端口是否对外开放。也可用端口扫描软件(比如Advanced Port Scanner)扫描端口以判断端口是否开放


4、--如要创建触发器   
create   trigger   t_test   on   test   
for   insert,update,delete   
as 
--加上下面两句,否则会提示新事务不能登记到指定事务处理器
set    xact_abort   on  
begin  distributed   tran 
    delete   from   openrowset('sqloledb','xz';'sa';'',test.dbo.test)   
    where   id   in(select   id   from   deleted)   
    insert   into   openrowset('sqloledb','xz';'sa';'',test.dbo.test)   
    select   *   from   inserted   
commit tran

--查询示例 
select * from ITSV.数据库名.dbo.表名 

--导入示例 
select * into 表 from ITSV.数据库名.dbo.表名 

--以后不再使用时删除链接服务器 
exec sp_dropserver  'ITSV ', 'droplogins ' 

#4


A. 使用用于 SQL Server 的 Microsoft OLE DB 提供程序
使用用于 SQL Server 的 OLE DB 创建链接服务器 
下面的示例创建一台名为 SEATTLESales 的链接服务器,该服务器使用用于 SQL Server 的 Microsoft OLE DB 提供程序。

USE master
GO
EXEC sp_addlinkedserver 
    'SEATTLESales',
    N'SQL Server'
GO

在 SQL Server 的实例上创建链接服务器 
此示例在 SQL Server 的实例上创建一台名为 S1_instance1 的链接服务器,该服务器使用 SQL Server 的 Microsoft OLE DB 提供程序。

EXEC    sp_addlinkedserver    @server='S1_instance1', @srvproduct='',
                                @provider='SQLOLEDB', @datasrc='S1\instance1'

B. 使用用于 Jet 的 Microsoft OLE DB 提供程序

#5


1楼、2楼的没有小jj

#6


sql脚本连接多个数据库
引用 5 楼 beirut 的回复:
1楼、2楼的没有小jj

#7


引用 6 楼 wufeng4552 的回复:
引用 5 楼 beirut 的回复:
1楼、2楼的没有小jj

水沟\(^o^)/~

#8


该回复于2010-07-09 16:52:35被版主删除

#9


引用 5 楼 beirut 的回复:
1楼、2楼的没有小jj

sql脚本连接多个数据库

#1


做链接服务器
代码等楼下

#2


跨实例连接,代码交给楼下

#3


--不同服务器数据库之间的数据操作
--************************************************************************************
1、--创建链接服务器 
exec sp_addlinkedserver   'ITSV', ' ', 'SQLOLEDB', '远程服务器名或ip地址 ' 
exec sp_addlinkedsrvlogin  'ITSV', 'false ',null, '用户名', '密码' 


2、启动两台服务器的MSDTC服务 
MSDTC服务提供分布式事务服务,如果要在数据库中使用分布式事务,必须在参与的双方服务器启动MSDTC(Distributed Transaction Coordinator)服务。

3、打开双方的135端口
MSDTC服务依赖于RPC(Remote Procedure Call (RPC))服务,RPC使用135端口,保证RPC服务启动,如果服务器有防火墙,保证135端口不被防火墙挡住。
使用“telnet IP 135”命令测试对方端口是否对外开放。也可用端口扫描软件(比如Advanced Port Scanner)扫描端口以判断端口是否开放


4、--如要创建触发器   
create   trigger   t_test   on   test   
for   insert,update,delete   
as 
--加上下面两句,否则会提示新事务不能登记到指定事务处理器
set    xact_abort   on  
begin  distributed   tran 
    delete   from   openrowset('sqloledb','xz';'sa';'',test.dbo.test)   
    where   id   in(select   id   from   deleted)   
    insert   into   openrowset('sqloledb','xz';'sa';'',test.dbo.test)   
    select   *   from   inserted   
commit tran

--查询示例 
select * from ITSV.数据库名.dbo.表名 

--导入示例 
select * into 表 from ITSV.数据库名.dbo.表名 

--以后不再使用时删除链接服务器 
exec sp_dropserver  'ITSV ', 'droplogins ' 

#4


A. 使用用于 SQL Server 的 Microsoft OLE DB 提供程序
使用用于 SQL Server 的 OLE DB 创建链接服务器 
下面的示例创建一台名为 SEATTLESales 的链接服务器,该服务器使用用于 SQL Server 的 Microsoft OLE DB 提供程序。

USE master
GO
EXEC sp_addlinkedserver 
    'SEATTLESales',
    N'SQL Server'
GO

在 SQL Server 的实例上创建链接服务器 
此示例在 SQL Server 的实例上创建一台名为 S1_instance1 的链接服务器,该服务器使用 SQL Server 的 Microsoft OLE DB 提供程序。

EXEC    sp_addlinkedserver    @server='S1_instance1', @srvproduct='',
                                @provider='SQLOLEDB', @datasrc='S1\instance1'

B. 使用用于 Jet 的 Microsoft OLE DB 提供程序

#5


1楼、2楼的没有小jj

#6


sql脚本连接多个数据库
引用 5 楼 beirut 的回复:
1楼、2楼的没有小jj

#7


引用 6 楼 wufeng4552 的回复:
引用 5 楼 beirut 的回复:
1楼、2楼的没有小jj

水沟\(^o^)/~

#8


该回复于2010-07-09 16:52:35被版主删除

#9


引用 5 楼 beirut 的回复:
1楼、2楼的没有小jj

sql脚本连接多个数据库