分布式查询的具体实现一(SQL Server,Access,Excel)
2011-10-26 22:37 Echo. 阅读(289) 评论(0) 收藏 举报
一,链接服务器
use master;
go
--创建产品为SQL Server的链接链接服务器. 如果链接服务器为SQL Server实例,则可以运行远程存储过程
sp_addlinkedserver 'MyLinkServer','','SQLNCLI','XIAOYAN-BE50AF5', NULL, NULL ,NULL;
go
sp_addlinkedsrvlogin 'MyLinkServer','false',NULL,'sa','sa';--设置登录映射
go
select * from MyLinkServer.Northwind.dbo.Categories;
go
--创建基于Microsoft OLE DB Provider for Jet for Access的链接服务器,注意Access 2003的OLE DB接口为Microsoft.Jet.OLEDB.4.0,Access 2007为Microsoft.ACE.OLEDB.12.0
sp_addlinkedserver 'NWind', 'Access','Microsoft.Jet.OLEDB.4.0', 'F:\Northwind.mdb',NULL,NULL,NULL;
go
sp_addlinkedsrvlogin 'NWind', 'false', NULL, 'Admin', NULL;
go
select * from NWind...Employees;
go
--创建基于Microsoft OLE DB Provider for Jet for Excel的链接服务器
sp_addlinkedserver 'Excel', 'Excel','Microsoft.Jet.OLEDB.4.0', 'F:\ExcelFile.xls',NULL,'Excel 5.0',NULL;
go
select * from Excel...Sheet1$;
go
--如果 SQL Server 在可以访问远程共享的域帐户下运行,则可以使用 UNC 路径来代替映射驱动器。
sp_addlinkedserver 'ExcelShare','Excel','Microsoft.Jet.OLEDB.4.0','\\MyServer\MyShare\Spreadsheets\DistExcl.xls',NULL,'Excel 5.0',NULL;
--查看本地链接服务器
sp_linkedservers;
go
select * from sys.servers;
go
二,临时名称
OPENROWSET 和 OPENDATASOURCE 并非提供链接服务器中的所有可用功能,例如登录映射管理、查询链接服务器的元数据的功能和配置各种连接设置(如超时值)的功能。
1.OPENROWSET 函数包含访问OLE DB数据源中远程数据所需的全部连接信息。当访问链接服务器中的表时,这种方法是一种替代方法。尽管查询可能返回多个结果集,但 OPENROWSET 只返回第一个结果集。
OPENROWSET 还通过内置的 BULK 访问接口支持大容量操作,正是有了该访问接口,才能从文件读取数据并将数据作为行集返回。
--Microsoft OLE DB Provider for SQLNCLI
select t.* from openrowset('SQLNCLI','XIAOYAN-BE50AF5';'sa';'sa','SELECT * FROM Northwind.dbo.Categories;') as t;
go
select t.* from openrowset('SQLOLEDB','Server=XIAOYAN-BE50AF5;Trusted_Connection=yes;','SELECT *
FROM Northwind.dbo.Categories;') as t;
go
--Microsoft OLE DB Provider for Jet
select t.* from openrowset('Microsoft.Jet.OLEDB.4.0','F:\Northwind.mdb';'Admin';'',Employees) as t;--Access 2000
go
select t.* from openrowset('Microsoft.ACE.OLEDB.12.0','Excel 5.0;HDR=YES;DATABASE=F:\ExcelFile.xlsx',sheet1$) as t;--Excel 2007
go
select t.* from openrowset('Microsoft.Jet.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=F:\ExcelFile.xls',sheet1$) as t;--Excel 2003
2.OPENDATASOURCE 函数可以在能够使用链接服务器名的相同 Transact-SQL 语法位置中使用,因此,就可以将 OPENDATASOURCE 用作四部分名称的第一部分,该名称指的是 SELECT、INSERT、UPDATE 或 DELETE 语句中的表或视图的名称;或者指的是 EXECUTE 语句中的远程存储过程。当执行远程存储过程时,OPENDATASOURCE 应该指的是另一个 SQL Server。OPENDATASOURCE 不接受参数变量。
select * from opendatasource('SQLNCLI','Data Source=XIAOYAN-BE50AF5;User ID=sa;Password=sa;').Northwind.dbo.Categories;
go
select * from opendatasource('SQLOLEDB','Data Source=XIAOYAN-BE50AF5;User ID=sa;Password=sa;').Northwind.dbo.Categories;
go
select t.* from opendatasource('Microsoft.Jet.OLEDB.4.0','Data Source=F:\ExcelFile.xls;User ID=Admin;Password=;Extended properties=Excel 5.0;')...Sheet1$ as t;
go
select t.* from opendatasource('Microsoft.Jet.OLEDB.4.0','Data Source=F:\Northwind.mdb;User ID=Admin;Password=;')...Categories as t;
go
use master;
go
--创建产品为SQL Server的链接链接服务器. 如果链接服务器为SQL Server实例,则可以运行远程存储过程
sp_addlinkedserver 'MyLinkServer','','SQLNCLI','XIAOYAN-BE50AF5', NULL, NULL ,NULL;
go
sp_addlinkedsrvlogin 'MyLinkServer','false',NULL,'sa','sa';--设置登录映射
go
select * from MyLinkServer.Northwind.dbo.Categories;
go
--创建基于Microsoft OLE DB Provider for Jet for Access的链接服务器,注意Access 2003的OLE DB接口为Microsoft.Jet.OLEDB.4.0,Access 2007为Microsoft.ACE.OLEDB.12.0
sp_addlinkedserver 'NWind', 'Access','Microsoft.Jet.OLEDB.4.0', 'F:\Northwind.mdb',NULL,NULL,NULL;
go
sp_addlinkedsrvlogin 'NWind', 'false', NULL, 'Admin', NULL;
go
select * from NWind...Employees;
go
--创建基于Microsoft OLE DB Provider for Jet for Excel的链接服务器
sp_addlinkedserver 'Excel', 'Excel','Microsoft.Jet.OLEDB.4.0', 'F:\ExcelFile.xls',NULL,'Excel 5.0',NULL;
go
select * from Excel...Sheet1$;
go
--如果 SQL Server 在可以访问远程共享的域帐户下运行,则可以使用 UNC 路径来代替映射驱动器。
sp_addlinkedserver 'ExcelShare','Excel','Microsoft.Jet.OLEDB.4.0','\\MyServer\MyShare\Spreadsheets\DistExcl.xls',NULL,'Excel 5.0',NULL;
--查看本地链接服务器
sp_linkedservers;
go
select * from sys.servers;
go
二,临时名称
OPENROWSET 和 OPENDATASOURCE 并非提供链接服务器中的所有可用功能,例如登录映射管理、查询链接服务器的元数据的功能和配置各种连接设置(如超时值)的功能。
1.OPENROWSET 函数包含访问OLE DB数据源中远程数据所需的全部连接信息。当访问链接服务器中的表时,这种方法是一种替代方法。尽管查询可能返回多个结果集,但 OPENROWSET 只返回第一个结果集。
OPENROWSET 还通过内置的 BULK 访问接口支持大容量操作,正是有了该访问接口,才能从文件读取数据并将数据作为行集返回。
--Microsoft OLE DB Provider for SQLNCLI
select t.* from openrowset('SQLNCLI','XIAOYAN-BE50AF5';'sa';'sa','SELECT * FROM Northwind.dbo.Categories;') as t;
go
select t.* from openrowset('SQLOLEDB','Server=XIAOYAN-BE50AF5;Trusted_Connection=yes;','SELECT *
FROM Northwind.dbo.Categories;') as t;
go
--Microsoft OLE DB Provider for Jet
select t.* from openrowset('Microsoft.Jet.OLEDB.4.0','F:\Northwind.mdb';'Admin';'',Employees) as t;--Access 2000
go
select t.* from openrowset('Microsoft.ACE.OLEDB.12.0','Excel 5.0;HDR=YES;DATABASE=F:\ExcelFile.xlsx',sheet1$) as t;--Excel 2007
go
select t.* from openrowset('Microsoft.Jet.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=F:\ExcelFile.xls',sheet1$) as t;--Excel 2003
2.OPENDATASOURCE 函数可以在能够使用链接服务器名的相同 Transact-SQL 语法位置中使用,因此,就可以将 OPENDATASOURCE 用作四部分名称的第一部分,该名称指的是 SELECT、INSERT、UPDATE 或 DELETE 语句中的表或视图的名称;或者指的是 EXECUTE 语句中的远程存储过程。当执行远程存储过程时,OPENDATASOURCE 应该指的是另一个 SQL Server。OPENDATASOURCE 不接受参数变量。
select * from opendatasource('SQLNCLI','Data Source=XIAOYAN-BE50AF5;User ID=sa;Password=sa;').Northwind.dbo.Categories;
go
select * from opendatasource('SQLOLEDB','Data Source=XIAOYAN-BE50AF5;User ID=sa;Password=sa;').Northwind.dbo.Categories;
go
select t.* from opendatasource('Microsoft.Jet.OLEDB.4.0','Data Source=F:\ExcelFile.xls;User ID=Admin;Password=;Extended properties=Excel 5.0;')...Sheet1$ as t;
go
select t.* from opendatasource('Microsoft.Jet.OLEDB.4.0','Data Source=F:\Northwind.mdb;User ID=Admin;Password=;')...Categories as t;
go
浙公网安备 33010602011771号