细化解析:怎样使用特殊名称标识数据源
当引用 OLE DB 数据源的频率不够高,尚不足以保证配置链接服务器时,可使用特殊名称作为表引用。在 Microsoft® SQL Server™ 2000 中,可以使用 OPENROWSET 和 OPENDATASOURCE 函数提供特殊名称。
OPENROWSET 和 OPENDATASOURCE 函数都提供特殊连接信息。可以使用这些函数指定访问 OLE DB 数据源所需的全部信息。但是,不可以将 OPENROWSET 和 OPENDATASOURCE 函数互换。
当 OLE DB 提供程序通过指定表(或视图)名称或通过指定返回行集的查询返回行集时,可以使用 OPENROWSET 函数。而 OPENROWSET 函数则可以在 Transact-SQL 语句中代替表或视图名称。
本示例使用特殊名称从 Microsoft Access 版本的 Northwind 示例数据库中检索数据。
SELECT *FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:/MSOffice/Access/Samples/northwind.mdb';'admin';'', Customers) |
仅当提供程序表现行集并 使用 catalog.schema.object 注释时,才可以使用 OPENDATASOURCE。该函数可以在能够使用链接服务器名的 Transact-SQL 语法位置中使用。即,在 catalog.schema.object 注释中,OPENDATASOURCE 可以用作表或视图名称(四部分)的第一部分。
-- SELECT from a table on another instance of SQL Server.SELECT *FROM OPENDATASOURCE('SQLOLEDB','Data Source=ServerName;User ID=MyUID;Password=MyPass').Northwind.dbo.Categories |
只有在特殊情况下(当不可能配置永久链接服务器时)访问外部数据时,才应使用 OPENROWSET 和 OPENDATASOURCE。这两个函数不提供链接服务器中的所有可用功能,如管理登录映射、查询链接服务器元数据的能力和配置各种连接设置(如超时值)的能力。
OPENROWSET 和 OPENDATASOURCE 的参数不支持变量。必须将它们指定为字符串字面值。如果需要将变量作为参数传递到这两个函数中,则可以使用 EXEC 语句动态地构造并执行包含这些变量的查询字符。