在创建SQL Server的链接服务器时,可以看到有如下几种访问接口,其中我们常用的只有1、3、4、6。其中4是安装Oracle客户端才会出现的接口,3、6是由于我电脑上装了2008R2和2012两个版本的数据库所致。
3、6可以看做一样的接口,因此我们只讨论1、3、4。此外不要忽略了上边还有个SQL Server的服务器类型,这个选项也对应着一个访问接口。
这四个访问接口分别对应:
- SQL Server--C:\Windows\System32\sqlsrv32.dll
- 1--OLEDB提供的对SQL Server的访问接口,OLEDB是一个基于COM+组件服务的data access provider,或者说一个数据访问的API,从脚本来看使用的是SQLNCLI接口,并非sqlncli11,猜测OLEDB可能是存在选择机制的。
- 3--SQL Server客户端提供的访问接口,C:\Windows\System32\sqlncli11.dll
- 4--Oracle提供的的访问接口,在创建到Oracle的DBLINK时使用
至于OLEDB与ODBC的区别,我认为stackoverflow上一篇讨论文章很好的解释了两者的差别,鉴于各种论点不是很统一因此贴出链接:
what is the difference between OLE DB and ODBC data sources?