mssql sqlserver OPENDATASOURCE函数的用法及简介


摘要:
下文讲述使用OPENDATASOURCE关键字连接远程数据源的方法,如下所示:



OPENDATASOURCE 功能简介及语法:

通过对象名称和连接信息对指定数据源进行访问。
——————————————————–
OPENDATASOURCE语法说明:
OPENDATASOURCE ( provider_name, init_string )
———————————————
参数说明:
provider_name:
用于连接字符串的访问接口名称,例:sqlOLEDB如下图所示:
mssql_sqlserver_链接服务器对象

mssql_sqlserver_链接服务器对象


init_string:
连接字符串的信息,每一个provider_name对应的连接字符串有不同的要求。

OPENDATASOURCE 使用注意事项:
使用opendataSource对指定数据源进行访问时,需启用Ad Hoc Distributed Queries
DisallowAdhocAccess 注册表选项针对指定的提供程序显式设置为 0
如果未进行以上设置,则无法使用opendatasource对指定数据源进行访问



OPENDATASOURCE举例说明:

exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
--访问E盘的access数据库中的testTable表
select keyId,info from 
opendataSource('sqloledb','Data Source="E:/test.mdb";')...testTable

----向access表中插入数据
insert into 
opendataSource('sqloledb','Data Source="E:/test.mdb";')...testTable 
(keyId,info)values(1,'test')
---采用opendatasource访问远程mssql 查询 插入 删除 数据
SELECT   top 10 *
FROM      OPENDATASOURCE(
         'ProviderName',
         'Data Source=ServerName;User ID=LoginUser;Password=Password'
         ).[DataBaseName].dbo.TableName
------例--------------------------------
---查询
SELECT   top 10 *
FROM      OPENDATASOURCE(
         'sqloledb',
         'Data Source=10.15.162.155;User ID=sa;Password=erp'
         ).[master].dbo.[test]
---插入
insert into      OPENDATASOURCE(
         'sqloledb',
         'Data Source=10.15.162.155;User ID=sa;Password=erp'
         ).[master].dbo.[test]
(keyId,info)
values(1,'test')

---更新
update   OPENDATASOURCE(
         'sqloledb',
         'Data Source=10.15.162.155;User ID=sa;Password=erp'
         ).[master].dbo.[test]
         set info ='test123' 
         where keyId =1  
---删除

delete from  OPENDATASOURCE(
         'sqloledb',
         'Data Source=10.15.162.155;User ID=sa;Password=erp'
         ).[master].dbo.[test] 
         where keyId =1 

--使用完毕 ,关闭
 exec sp_configure 'show advanced options',0
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure