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   属性传递进来以初始化提供程序。user_id   不能是   Microsoft   Windows   NT®   登录名称。  
   
  'password'    
   
  字符串常量,它是将被传递到   OLE   DB   提供程序的用户密码。当初始化提供程序时,将   password   作为   DBPROP_AUTH_PASSWORD   属性传递进来。password   不能是   Microsoft   Windows   NT®   密码。  
   
  '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   表。  
   
   
   
  说明     下面的示例假定已经安装了   Access。  
   
   
  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   表中选择所有数据  
   
   
   
  说明     下面的示例假定已经安装了   Access。  
   
   
  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   
 

你可能感兴趣的:(sql,SQL Server,Microsoft,Access,Go)