目錄
- 數據庫訪問接口發展歷史
- ODBC、OLEDB和ADO之間的關系
- VB腳本下的數據庫接口代碼示例
- 在SQL Server中通過鏈接服務器查詢OLE DB數據源
- 在SQL Server中直接查詢OLE DB數據源
數據庫訪問接口發展歷史
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;