调用OPENROWSET的方法事例代码:select*fromOPENROWSET('SQLNCLI','server=127.0.0.1;uid=sa;pwd=8315679;database=bbs','select*from_category')OLEDB错误:OLEDB或ODBC错误发生这种问题是因为,SQLServer2005只提供对一组特定访问接口的进程内访问。SQLNCLI是SQLServer2005的一个新的本机OLEDB访问接口,它具有访问权。但是,SQLNCLI.1是特定于版本的SQLNCLI访问接口,它不在访问接口的列表中。因此,SQLNCLI.1没有访问权。尽管SQLNCLI和SQLNCLI.1完全相同(因为SQLNCLI指向SQLNCI.1),但SQLServer2005并不能识别出它们是相同的。SQLServer2005会阻止对SQLNCLI.1的访问。要解决此问题,请使用下列方法之一:•在OLEDB连接字符串中使用SQLNCLI代替SQLNCLI.1。•在SQLServer中,将SQLNCL.1显式添加到具有进程内访问权的供应商列表中。Sqloledb、SQLNCLI都是可以的insertintoopenrowset('SQLOLEDB','127.0.0.1';'sa';'8315679',bbs.dbo._category)([name],[description])select[name],[description]from_categorysp_addlinkedserver创建一个链接的服务器,使其允许对分布式的、针对OLEDB数据源的异类查询进行访问。在使用sp_addlinkedserver创建链接的服务器之后,此服务器就可以执行分布式查询。如果链接服务器定义为Microsoft®SQLServer™,则可执行远程存储过程。语法sp_addlinkedserver[@server=]'server'[,[@srvproduct=]'product_name'][,[@provider=]'provider_name'][,[@datasrc=]'data_source'][,[@location=]'location'][,[@provstr=]'provider_string'][,[@catalog=]'catalog']语法sp_addlinkedsrvlogin[@rmtsrvname=]'rmtsrvname'[,[@useself=]'useself'][,[@locallogin=]'locallogin'][,[@rmtuser=]'rmtuser'][,[@rmtpassword=]'rmtpassword'][@useself=]'useself'决定用于连接到远程服务器的登录名称。useself的数据类型为varchar(8),默认设置为TRUE。true值指定SQLServer验证的登录使用其自己的凭据以连接到rmtsrvname,而忽略rmtuser和rmtpassword参数。false值指定rmtuser和rmtpassword参数用来连接到特定locallogin的rmtsrvname。如果rmtuser和rmtpassword也设置为NULL,则连接链接服务器不需使用任何登录或密码。对于WindowsNT身份验证登录而言,useself为true则无效,除非MicrosoftWindowsNT®环境支持安全帐户委托,并且,提供程序支持Windows身份验证(此时不再需要创建值为true的映射,不过创建仍然有效)。[@locallogin=]'locallogin'本地服务器上的登录。locallogin的数据类型为sysname,默认设置为NULL。NULL值指定此条目将应用于所有连接到rmtsrvname的本地登录。如果值不为NULL,则locallogin可以是一个SQLServer登录或WindowsNT用户。必须授予WindowsNT用户直接访问SQLServer或通过其作为已授予访问权限的组的成员来访问SQLServer的权限。不同服务器数据库之间的数据操作--创建链接服务器execsp_addlinkedserver'ITSV','','SQLOLEDB','远程服务器名或ip地址'execsp_addlinkedsrvlogin'ITSV','false',null,'用户名','密码'--查询示例select*fromITSV.数据库名.dbo.表名--导入示例select*into表fromITSV.数据库名.dbo.表名--以后不再使用时删除链接服务器execsp_dropserver'ITSV','droplogins'--连接远程/局域网数据(openrowset/openquery/opendatasource)--1、openrowset--查询示例select*fromopenrowset('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)--生成本地表select*into表fromopenrowset('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)--把本地表导入远程表insertopenrowset('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)select*from本地表--更新本地表updatebsetb.列A=a.列Afromopenrowset('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)asainnerjoin本地表bona.column1=b.column1--openquery用法需要创建一个连接--首先创建一个连接创建链接服务器execsp_addlinkedserver'ITSV','','SQLOLEDB','远程服务器名或ip地址'--查询select*FROMopenquery(ITSV,'SELECT*FROM数据库.dbo.表名')--把本地表导入远程表insertopenquery(ITSV,'SELECT*FROM数据库.dbo.表名')select*from本地表--更新本地表updatebsetb.列B=a.列BFROMopenquery(ITSV,'SELECT*FROM数据库.dbo.表名')asainnerjoin本地表bona.列A=b.列A--3、opendatasource/openrowsetSELECT*FROMopendatasource('SQLOLEDB','DataSource=ip/ServerName;UserID=登陆名;Password=密码').test.dbo.roy_ta--把本地表导入远程表insertopendatasource('SQLOLEDB','DataSource=ip/ServerName;UserID=登陆名;Password=密码').数据库.dbo.表名select*fromexecsp_addlinkedserver'srv_lnk','','SQLOLEDB','192.168.0.111'execsp_addlinkedsrvlogin'srv_lnk','false',null,'sa','7852'selectcount(*)fromsrv_lnk.datainfodb.dbo.userinfoexecsp_dropserver'srv_lnk','droplogins'/*-----删除远程服务器------*/1.通过行集函数opendatasource要求:本地安装Oracle客户端select*fromopendatasource('MSDAORA','DataSource=XST4;UserID=manager;Password=sjpsjsjs')..MISD.PBCATCOL其中,MSDAORA是OLEDBFOROracle的驱动,2.使用链接服务器方式EXECSP_ADDLINKEDSERVER@server='mylinkedserver',--链接服务器名称@srvproduct='Oracle',--固定@provider='MSDAORA',--固定@datasrc='XST4'--Oracle本地服务名altertable表名add列名数据类型