链接服务器和其他方式的比较OPENROWSET、OPENDATASOURCE 引用那些不经常访问的 OLE DB 数据源。对于访问次数稍多的任何数据源,请为它们定义链接的服务器。无论 OPENDATASOURCE 还是 OPENROWSET 都不能提供链接的服务器定义的全部功能,例如,安全管理以及查询目录信息的能力。每次调用 OPENDATASOURCE 时,都必须提供所有的连接信息(包括密码)一、OPENDATASOURCE
不使用链接的服务器名,而提供特殊的连接信息,并将其作为四部分对象名的一部分。
语法
OPENDATASOURCE ( provider_name, init_string )
问题:是否只能使用OLEDB访问其他数据源。二、OPENROWSET
包含访问 OLE DB 数据源中的远程数据所需的全部连接信息。当访问链接服务器中的表时,这种方法是一种替代方法,并且是一种使用 OLE DB 连接并访问远程数据的一次性的、特殊的方法。可以在查询的 FROM 子句中像引用表名那样引用 OPENROWSET 函数。依据 OLE DB 提供程序的能力,还可以将 OPENROWSET 函数引用为 INSERT、UPDATE 或 DELETE 语句的目标表。尽管查询可能返回多个结果集,然而 OPENROWSET 只返回第一个。三、 OPENQUERY (链接服务器)
在给定的链接服务器(一个 OLE DB 数据源)上执行指定的直接传递查询。可以在查询的 FROM 子句中像引用表名那样引用 OPENQUERY 函数。依据 OLE DB 提供程序的能力,还可以将 OPENQUERY 函数引用为 INSERT、UPDATE 或 DELETE 语句的目标表。尽管查询可能返回多个结果集,但是 OPENQUERY 只返回第一个。

解决方案 »

  1.   

    OPENROWSET函数使用OLE DB连接并访问远程数据。可以在查询的FROM子句中像引用表名那样引用OPENROWSET函数。依据OLE DB提供程序的能力,还可以将OPENROWSET函数引用为INSERT、UPDATE或DELETE语句的目标表。尽管查询可能返回多个结果集,然而OPENROWSET只返回第一个。
    OPENDATASOURCE函数将连接信息作为由四部分组成的对象名称的一部分加以提供,因此可以在能够使用链接服务器名的相同Transact-SQL语法位置中使用,这就意味着可以把OPENDATASOURCE做为SELECT、INSERT、UPDATE或DELETE语句中的表或视图名称的第一部分;是EXECUTE语句中的远程存储过程名称的第一部分。当执行远程存储过程时,OPENDATASOURCE应该指的是另一个SQL Server。该函数只支持使用catalog.schema.object注释表现多个行集的OLE DB提供程序。 
    可以理解为表现形式不同