SQLServer的跨库查询的实现方法
发布网友
发布时间:2024-09-27 07:14
我来回答
共1个回答
热心网友
时间:2024-10-19 07:41
本文给出了一个SQL语句,用于在同一服务器上显示不同数据库之间的查询。注意,当前连接用户拥有对所有两个库的权限。
SQLServer中sql语句中对象的完整表达式为:
{服务器}。{语句},{ DatabaseSchema },{ DatabaseObject }
在本文中,使用SQL语句显示同一服务器上不同数据库之间的查询。值得注意的是,当前连接用户可以访问两个库。
复制代码代码如下所示:
选择*
从cfteadb1.dbo.cfteatable1内加入cfteadb2.dbo.cfteatable2
在cfteadb1。dbo。cfteatable1 ID = cfteadb2.dbo.cfteatable2.id。
以上已在SQL Server 2008 R2的管理库中成功地进行了测试。
以下是一些补充信息
未使用链接的服务器名称,并且作为对象名称的四部分的一部分提供了特殊的连接信息。
语法
OPENDATASOURCE(provider_name,init_string)
参数
provider_name
的ProgID,注册为OLE DB提供程序用于访问数据源的名称,provider_name数据类型char和没有默认值。
init_string
连接字符串,它将被传递给目标供应商IDataIntialize接口。提供程序字符串的语法是基于关键字-值对,其中由分号分隔的,如中=价值;关键词=价值。
基本语法的定义是在微软(R)的数据访问,在特定的关键字值对所支持的信息,在供应商看到文件。下表列出了在init_string参数最常用的关键词。
关键词
OLE DB属性
有效值和描述
数据源
dbprop_init_datasource
数据源的名称有联系的。不同的供应商不同的方式解释它,SQL Server OLE DB提供者,这将指定服务器的名称。对射流的OLE DB提供程序,这将表明的全路径.mdb文件或.xls文件。
位置
dbprop_init_location
要连接的数据库的位置。
扩展属性
dbprop_init_providerstring
提供特定于程序的连接字符串。
连接超时
dbprop_init_timeout
超时值,超时值之后,连接尝试将失败。
用户ID
dbprop_auth_userid
连接的用户ID。
密码
dbprop_auth_password
用于连接的密码。
目录
dbprop_init_catalog
连接到数据源的初始或默认目录名。
笔记
OPENDATASOURCE函数可以用在同一个位置,可以使用Transact-SQL语法的链接服务器的名称。因此,OPENDATASOURCE可以作为四部分的名字的第一部分,指的是在选择,插入的表或视图的名称,更新或删除语句,或是指远程存储过程在执行语句。当远程存储过程执行时,指的是另一个SQL server.opendatasource OPENDATASOURCE应该不接受参数变量。
类似于OPENROWSET函数OPENDATASOURCE应该仅指OLE DB数据源不经常访问的数据源。任何有一点接入,定义链接服务器。既不可如openrowset OPENDATASOURCE提供的服务器,连接定义的所有功能,安全管理和查询目录信息的能力。每次调用OPENDATASOURCE时,所有的连接信息(包括密码)必须提供。
样品
下面的示例访问SQLServer另一个实例中的表中的数据。
复制代码代码如下所示:
*选择
从OPENDATASOURCE(
SQLOLEDB。
数据源= %ServerName;用户ID = myuid;密码= mypass
Northwind. dbo.类别)
下面是一个查询,通过OLE DB提供程序查询Excel电子表格的查询示例。
复制代码代码如下所示:
*选择
从OPENDATASOURCE('microsoft。飞机。OLEDB。4。
数据源=C:财务帐户。XLS;用户ID =管理员;密码=;扩展属性= Excel 5)…xactions