OPENROWSET
包含访问 OLE DB 数据源中的远程数据所需的全部连接信息。当访问链接服务器中的表时,这种方法是一种替代方法,并且是一种使用 OLE DB 连接并访问远程数据的一次性的、特殊的方法。可以在查询的 FROM 子句中像引用表名那样引用 OPENROWSET 函数。依据 OLE DB 提供程序的能力,还可以将 OPENROWSET 函数引用为 INSERT、UPDATE 或 DELETE 语句的目标表。尽管查询可能返回多个结果集,然而 OPENROWSET 只返回第一个。
语法
OPENROWSET ( 'provider_name'
, { 'datasource' ; 'user_id' ; 'password'
| 'provider_string' }
, { [ catalog.] [ schema.] object
| 'query' }
)
参数
'provider_name'
字符串,它代表在注册表中指定的 OLE DB 提供程序的友好名。provider_name 没有默认值。
'datasource'
字符串常量,它对应着某个特定的 OLE DB 数据源。datasource 是将被传递到提供程序 IDBProperties 接口以初始化提供程序的 DBPROP_INIT_DATASOURCE 属性。通常,这个字符串包含数据库文件的名称、数据库服务器的名称,或者提供程序能理解的用于查找数据库的名称。
'user_id'
字符串常量,它是传递到指定 OLE DB 提供程序的用户名。user_id 为连接指定安全上下文,并将它作为 DBPROP_AUTH_USERID 属性传递进来以初始化提供程序。
'password'
字符串常量,它是将被传递到 OLE DB 提供程序的用户密码。当初始化提供程序时,将 password 作为 DBPROP_AUTH_PASSWORD 属性传递进来。
'provider_string'
提供程序特定的连接字符串,将它作为 DBPROP_INIT_PROVIDERSTRING 属性传递进来以初始化 OLE DB 提供程序。通常 provider_string 封装初始化提供程序所需的所有连接信息。
catalog
目录或数据库的名称,其中驻留着指定的对象。
schema
架构的名称或指定对象的对象所有者名称。
object
对象名称,它唯一地标识出将要操作的对象。
'query'
是字符串常量,发送到提供程序并由提供程序执行。Microsoft® SQL Server™ 不处理该查询,但处理由提供程序返回的查询结果(直接传递查询)。对于有些提供程序,它们并没有通过表名而是通过命令语言表现自己的表格格式数据,那么将直接传递查询用于这些提供程序是非常有用的。只要查询提供程序支持 OLE DB Command 对象及其强制接口,那么在远程服务器上就支持直接传递查询。有关更多信息,请参见 SQL Server OLE DB 程序员参考。
注释
如果 OLE DB 提供程序在指定的数据源中支持多个目录和架构,那么就需要目录及架构名称。如果 OLE DB 提供程序并不支持目录和架构,那么可以省略 catalog 及 schema 的值。
如果提供程序只支持架构名,那么必须指定一个两部分名称,形式为 schema.object。如果提供程序只支持目录名,那么必须指定一个三部分名称,形式为 catalog.schema.object。
OPENROWSET 不接受参数变量。
权限
OPENROWSET 权限由传递到 OLE DB 提供程序的用户名的权限确定。
示例
A. 将 OPENROWSET 与 SELECT 语句及用于 SQL Server 的 Microsoft OLE DB 提供程序一起使用
下面的示例使用用于 SQL Server 的 Microsoft OLE DB 提供程序访问 pubs 数据库中的 authors 表,该数据库在一个名为 seattle1 的远程服务器上。从 datasource、user_id 及 password 中初始化提供程序,并且使用 SELECT 语句定义返回的行集。
USE pubs
GO
SELECT a.*
FROM OPENROWSET('SQLOLEDB','seattle1';'sa';'MyPass',
'SELECT * FROM pubs.dbo.authors ORDER BY au_lname, au_fname') AS a
GO
B. 将 OPENROWSET 与对象及用于 ODBC 的 OLE DB 提供程序一起使用
下面的示例使用用于 ODBC 的 OLE DB 提供程序以及 SQL Server ODBC 驱动程序访问 pubs 数据库中的 authors 表,该数据库在一个名为 seattle1 的远程服务器中。提供程序用在 ODBC 提供程序所用的 ODBC 语法中指定的 provider_string 进行初始化,定义返回的行集时使用 catalog.schema.object 语法。
USE pubs
GO
SELECT a.*
FROM OPENROWSET('MSDASQL',
'DRIVER={SQL Server};SERVER=seattle1;UID=sa;PWD=MyPass',
pubs.dbo.authors) AS a
ORDER BY a.au_lname, a.au_fname
GO
C. 使用用于 Jet 的 Microsoft OLE DB 提供程序
下面的示例通过用于 Jet 的 Microsoft OLE DB 提供程序访问 Microsoft Access Northwind 数据库中的 orders 表。
<!--NOTE-->
说明下面的示例假定已经安装了 Access。
<!--/NOTE-->
USE pubs
GO
SELECT a.*
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'c:\MSOffice\Access\Samples\northwind.mdb';'admin';'mypwd', Orders)
AS a
GO
D. 使用 OPENROWSET 和 INNER JOIN 中的另一个表
下面的示例从本地 SQL Server Northwind 数据库的 customers 表中,以及存储在相同计算机上 Access Northwind 数据库的 orders 表中选择所有数据
<!--NOTE-->
说明下面的示例假定已经安装了 Access。
<!--/NOTE-->
USE pubs
GO
SELECT c.*, o.*
FROM Northwind.dbo.Customers AS c INNER JOIN
OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'c:\MSOffice\Access\Samples\northwind.mdb';'admin';'mypwd', Orders)
AS o
ON c.CustomerID = o.CustomerID
GO
相关推荐
本话题将深入探讨如何利用ASP进行Excel文件的导出和将Excel数据导入到MSSQL数据库的过程。 **一、ASP导出Excel** 1. **创建Excel对象**:首先,我们需要在ASP页面中创建一个Excel对象,通过VBScript或JScript来...
- OPENROWSET函数:SQL Server可以直接通过OPENROWSET函数读取Excel文件中的数据,将其视为临时表进行处理。 - SSIS:同样,SSIS也可以用来从Excel文件中导入数据到SQL Server,支持批量导入和复杂的转换逻辑。 3...
此外,标签“源码 工具”暗示可能还有涉及自定义脚本的方法,比如使用Transact-SQL的`OPENROWSET`函数或者` Bulk Insert`语句来批量导入Excel数据。这些方法适用于自动化导入过程,尤其是当向导不能满足特定需求时。...
2. **使用SQL语句**:编写SQL的`INSERT INTO`语句,结合`OPENROWSET`函数,可以直接读取Excel文件并插入数据到MSSQL表中。例如: ```sql INSERT INTO YourTable SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB....
10. **插入数据**:最后,使用`OPENROWSET`函数或类似的方法将数据从源表插入到Excel文件中对应的表中。 #### 详细步骤分析: 1. **参数定义**:存储过程接受三个参数:表名、文件路径和文件名。其中文件名默认为...
标题《通过VFPOLEDB批量导入数据到MSSQL2000》和描述《通过VFPOLEDB直接将DBF表数据批量导入MSSQL2000数据库中,在实际企业开发中,经常会用到,导入数据超快,比EXCEL导入快上很多,导入数据后立即释放表资源》提到...
在MSSQL环境中,可以使用`OPENROWSET`函数来连接并查询非SQL Server数据源,例如Excel文件。以下为一个基本示例: ```sql SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;HDR=YES;IMEX=1;...
- **直接导入**:某些数据库系统如SQL Server提供直接导入Excel的功能,通过图形化界面或SQL命令(如`OPENROWSET(BULK...)`)实现。 - **导出为CSV**:Excel可以另存为CSV(逗号分隔值)文件,大部分数据库支持...
- 编写T-SQL语句,如`BULK INSERT`或`INSERT INTO...SELECT`,结合Openrowset函数直接从Excel文件加载数据。 - 使用Power Query(在Excel 2010及以后版本中称为“获取和转换数据”),可以将Excel数据连接到MSSql...
\[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MicrosoftSQLServer\MSSQL.1\Providers\Microsoft.Jet.OLEDB.4.0] - 在此路径下新建一个 DWORD (64 位值),命名为 `DisallowAdhocAccess`,并将其值设为 `0`。 - 这一步...
Extended Properties="Excel 8.0"'`:连接字符串,其中`Excel 8.0`对应Excel 2003及以前版本的文件格式。 ##### dBase文件的导入: ```sql SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'dBaseIV;HDR=NO;...
2. **Openrowset函数**:在SQL查询中,你可以利用`OPENROWSET`函数直接读取Excel文件,如`INSERT INTO YourTable SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\YourFile.xls', '...
它可以访问支持OLE DB接口的数据源,包括但不限于SQL Server、Oracle、Excel等。对于本文讨论的情况,即连接局域网内的其他数据库,我们可以使用`OPENROWSET`函数来连接到远程SQL Server实例。 #### 2. 使用`...
本文主要聚焦于如何在MSSQL中进行跨服务器操作,涉及到的数据源包括MSSQL、Excel、DB2、Oracle和XML等。关键在于使用MSDASQL驱动接口来实现这一功能。 首先,要建立连接服务器和链接服务器登录。通过`sp_...
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\Path\To\Your\File.xls', 'SELECT * FROM [Sheet1$]') ``` 5. **DBU工具**:如果使用DBU工具,你可能需要配置工具的设置以支持批量...
- BULK INSERT和OPENROWSET函数可批量导入数据,对于快餐店初始数据加载非常实用。 - 导出数据到Excel或其他格式,方便数据分析和分享。 通过这个小型快餐店数据库实例,初学者可以实践数据库设计、查询、安全...