• 用openrowset函数操作远程数据库


    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 的远程服务器上。从 datasourceuser_idpassword 中初始化提供程序,并且使用 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
    

    --把本地的数据插入服务器
    insert openrowset( 'SQLOLEDB', '211.102.91.187 '; 'www_dgcgh_com'; 'jshchg20050916',[www_dgcgh_com].dbo.product) 
    select * from  product  where id='232'


    --把本地的数据插入服务器

    insert openrowset( 'SQLOLEDB', '远程服务器IP '; '用户名'; '用户密码',数据库名.dbo.表名) select * from  表名  where id='232'

  • 相关阅读:
    CSS Sprite
    使用float和display:block将内联元素转换成块元素的不同点
    [POJ 1185] 炮兵阵地
    [POJ 1947] Rebuilding Roads
    [HDU 1561] The more, The Better
    [HDU 1011] Starship Troopers
    [POJ 1155] TELE
    [HDU 2196] Computer
    [HDU 1520] Anniversary party
    [HDU 5029] Relief grain
  • 原文地址:https://www.cnblogs.com/jshchg/p/1751602.html
Copyright © 2020-2023  润新知