目錄
資料庫通路接口發展曆史
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;