目录
数据库访问接口发展历史
ODBC历史
ODBC(Open Database Connectivity,开放数据库互连)。要了解ODBC是什么,先了解一下数据库连接的相关知识。在最开始连接数据库时,由于数据库种类繁多,各种数据库连接有不同的需求,这个时期,数据库连接主要依靠各种API函数来进行连接。在这种背景下,微软于1992年发表了ODBC, ODBC就是将这些API函数封装起来形成统一的接口。当SQL语句进入接口后,驱动器管理程序将它们送入对应的驱动器(driver),由驱动器将SQL语句送入各种不同的数据库。
OLE DB历史
OLE DB(Object Linking and Embedding, Database,对象链接嵌入数据库)是微软为以统一方式访问不同类型的数据存储设计的一种应用程序接口。OLE DB 是建立在 ODBC 功能之上的一个开放规范。ODBC 是为访问关系型数据库而专门开发的,OLE DB 则用于访问关系型和非关系型信息源。OLE DB可以通过ODBC连接到数据库,也可以直接连接到数据库,并且直接连接的访问速度更快。可以知道,只要支持ODBC的数据源是一定能够支持OLEDB的,但是反过来则不一定。
ADO历史
ADO(ActiveX Data Objects,ActiveX 数据对象)在1996年8月与OLE DB一起被发布,是在OLE DB上面创建的一个新的统一的数据访问的高层对象模型。ADO推出后顺利的取代了微软早期的数据访问对象层(包括RDO(Remote Data Objects)和DAO(Data Access Objects))。ADO将OLE DB的对象模型进一步简化,由数据库厂商开发满足OLE DB接口的数据提供者(data provider),而ADO本身则是与数据源无关(data source independent)的对象结构,这使得ADO通用性极好。
ODBC、OLEDB和ADO之间的关系
VB脚本下的数据库接口代码示例
OLEDB连接
标准安全模式(Standard Security)
dim conn, sCon
set conn=server.CreateObject("ADODB.Connection")
sCon="Provider=SQLOLEDB;Data Source=(local); Initial Catalog =dbname;User ID=sa;Password=123"
conn.open(sCon)
信任连接(Trusted connection)
dim conn, sCon
set conn=server.CreateObject("ADODB.Connection")
sCon="Provider=SQLOLEDB; Integrated Security=SSPI; Persist Security Info=False;Data Source=(local); Initial Catalog =dbname"
conn.open(sCon)
ODBC连接
通过系统数据源(System DSN)连接
先注册数据源:DSN。打开管理工具 -> 数据源(ODBC) -> 打开系统DSN选项卡 -> 单击添加按钮 -> 从列表中选择SQL Server,单击完成 -> 在名称中输入数据库名称,在你想连接的SQL Server服务器中输入(local)-> 按向导提示完成。
dim conn, sCon
set conn=server.CreateObject("ADODB.Connection")
sCon="DSN=注册名;Uid=sa;Pwd=123"
conn.open(sCon)
通过ODBC驱动程序连接
dim conn, sCon
set conn=server.CreateObject("ADODB.Connection")
sCon="Driver={SQL Server};Server=(local); Uid=sa;Pwd=123;Database=dbname"
conn.open(sCon)
在SQL Server中通过链接服务器查询OLE DB数据源
创建链接服务器
配置链接服务器使SQL Server数据库引擎能够访问SQL Server实例之外的OLE DB数据源。
在SQL Server Management Studio中,打开对象资源管理器,展开“服务器对象”,右键单击“链接服务器”,然后单击“新建链接服务器”。
在“常规”页中,“链接服务器”一栏中为链接服务器命名,并填入其他信息。
对链接数据库查询
在指定的链接服务器上执行传递查询。语法如下 :
OPENQUERY ( linked_server ,'query' )
参数:
linked_server:表示链接服务器名称的标识符。
' query ':在链接服务器中执行的查询字符串。该字符串的最大长度为 8 KB。
OPENQUERY 可以在查询的 FROM 子句中引用,就好象它是一个表名
SELECT * FROM OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE name = ''NewTitle''');
在SQL Server中直接查询OLE DB数据源
通过OPENDATASOURCE()函数直接查询OLE DB数据源,语法如下:
OPENDATASOURCE ( 'provider_name', 'init_string' )
示例如下:
SELECT GroupName, Name, DepartmentID
FROM OPENDATASOURCE('MSOLEDBSQL', 'Server=Seattle1;Database=AdventureWorks2016;TrustServerCertificate=Yes;Trusted_Connection=Yes;').HumanResources.Department
ORDER BY GroupName, Name;