LiaoHao

一、SQl跨服务器查询的实现 SQl跨服务器查询的二种实现方法:

1
2
3
4
5
6
7
8
9
select   *   from   OPENDATASOURCE(   
                  \'SQLOLEDB\',   
                  \'Data   Source=远程ip;User     
                  ).库名.dbo.表名 
  
insert   本地库名..表名   select   *   from   OPENDATASOURCE(   
                  \'SQLOLEDB\',   
                  \'Data   Source=远程ip;User    
                  ).库名.dbo.表名

或使用联结服务器:

1
2
3
EXEC   sp_addlinkedserver   \'别名\',\'\',\'MSDASQL\',NULL,NULL,\'DRIVER={SQL   Server};SERVER=远程名;UID=用户;PWD=密码;\'  
exec   sp_addlinkedsrvlogin     @rmtsrvname=\'别名\',@useself=\'false\',@locallogin=\'sa\',@rmtuser=\'sa\',@rmtpassword=\'密码\'  
GO

然后你就可以如下:

1
2
3
4
select   *   from   别名.库名.dbo.表名   
insert   库名.dbo.表名   select   *   from   别名.库名.dbo.表名   
select   *   into   库名.dbo.新表名   from   别名.库名.dbo.表名   
go

1、使用 ODBC 的 Microsoft OLE DB 提供程序

1
EXEC sp_addlinkedserver \'别名\',\'\',\'MSDASQL\',NULL,NULL,\'DRIVER={SQL Server};SERVER=远程名;UID=用户;PWD=密码;\'

如果加上参数@catalog,可以指定数据库

1
exec sp_addlinkedsrvlogin  @rmtsrvname=\'别名\',@useself=\'false\',@locallogin=\'sa\',@rmtuser=\'sa\',@rmtpassword=\'密码\'

2、使用SQL Server 的 Microsoft OLE DB 提供程序

1
2
exec sp_addlinkedserver @server=\'别名\',@provider=\'sqloledb\',@srvproduct=\'\',@datasrc=\'远程服务器名\'
exec sp_addlinkedsrvlogin  @rmtsrvname=\'wzb\',@useself=\'false\',@locallogin=\'sa\',@rmtuser=\'sa\',@rmtpassword=\'密码\'

然后你就可以如下:

1
2
3
4
select * from 别名.库名.dbo.表名
insert 库名.dbo.表名 select * from 别名.库名.dbo.表名
select * into 库名.dbo.新表名 from 别名.库名.dbo.表名
go

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

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

例2、 --建立链接服务器

1
2
3
4
5
6
7
8
9
EXEC sp_addlinkedserver \'joe\',\'\',\'MSDASQL\',NULL,NULL,\'DRIVER={SQL Server};SERVER=192.168.0.1;UID=sa;PWD=123;\'
--建立链接服务器登录映射
exec sp_addlinkedsrvlogin  @rmtsrvname=\'joe\',@useself=\'false\',@locallogin=\'sa\',@rmtuser=\'sa\',@rmtpassword=\'123\'
go
--查询数据
select * from joe.schooladmin.dbo.agent  
--删除链接服务器登录映射和链接服务器:
exec sp_droplinkedsrvlogin \'joe\' ,\'sa\'
exec sp_dropserver  \'joe\'

小结:如果是单查询的话,建议使用第一种方法,如果是多条查询的话,建议使用第二种方法。
二、SQl跨数据库查询的实现

1
select * from [AAA]..Table1 a inner join [BBB]..Table2 b on a.id1 = b.id2

分类:

技术点:

相关文章:

  • 2022-01-27
  • 2021-11-28
猜你喜欢
  • 2021-12-21
  • 2022-01-19
  • 2021-11-18
  • 2021-11-22
  • 2021-11-17
  • 2021-11-08
  • 2021-09-10
相关资源
相似解决方案