在sql server中通過鏈結伺服器查詢ole db資料來源
在sql server中直接查詢ole db資料來源
odbc(open database connectivity,開放資料庫互連)。要了解odbc是什麼,先了解一下資料庫連線的相關知識。在最開始連線資料庫時,由於資料庫種類繁多,各種資料庫連線有不同的需求,這個時期,資料庫連線主要依靠各種api函式來進行連線。在這種背景下,微軟於2023年發表了odbc, odbc就是將這些api函式封裝起來形成統一的介面。當sql語句進入介面後,驅動器管理程式將它們送入對應的驅動器(driver),由驅動器將sql語句送入各種不同的資料庫。
ole db(object linking and embedding, database,物件鏈結嵌入資料庫)是微軟為以統一方式訪問不同型別的資料儲存設計的一種應用程式介面。ole db 是建立在 odbc 功能之上的乙個開放規範。odbc 是為訪問關係型資料庫而專門開發的,ole db 則用於訪問關係型和非關係型資訊源。ole db可以通過odbc連線到資料庫,也可以直接連線到資料庫,並且直接連線的訪問速度更快。可以知道,只要支援odbc的資料來源是一定能夠支援oledb的,但是反過來則不一定。
ado(activex data objects,activex 資料物件)在2023年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通用性極好。
標準安全模式(standard security)
dim conn, scon信任連線(trusted connection)set conn=server.createobject("adodb.connection")
scon="provider=sqloledb;data source=(local); initial catalog =dbname;user id=sa;password=123"
conn.open(scon)
dim conn, scon通過系統資料來源(system dsn)連線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)
先註冊資料來源:dsn。開啟管理工具 -> 資料來源(odbc) -> 開啟系統dsn選項卡 -> 單擊新增按鈕 -> 從列表中選擇sql server,單擊完成 -> 在名稱中輸入資料庫名稱,在你想連線的sql server伺服器中輸入(local)-> 按嚮導提示完成。
dim conn, scon通過odbc驅動程式連線set conn=server.createobject("adodb.connection")
scon="dsn=註冊名;uid=sa;pwd=123"
conn.open(scon)
dim conn, sconset conn=server.createobject("adodb.connection")
scon="driver=;server=(local); uid=sa;pwd=123;database=dbname"
conn.open(scon)
dim sql, rsrs.open的引數如下:sql = "select * from tablename"
set rs = createobject("adodb.recordset")
rs.open ssql,conn,2,3
cursortypeenum常量值
說明adopendynamic
2使用動態游標。 其他 使用者的新增 、更改和刪除是可見的,並且允許所有型別的移動
adopenforwardonly
0預設。 使用只進游標。 與靜態游標相同,不同之處在於只能向前滾動記錄。 當只需通過 記錄集 進行一次傳遞時,這可以提高效能。
adopenkeyset
1使用鍵集游標。 與動態游標類似,但你看不到其他使用者新增的記錄,但其他使用者刪除的記錄無法從 記錄集中 訪問。 其他使用者的資料更改仍然可見。
adopenstatic
3使用靜態游標,該游標是一組記錄的靜態副本,可用於查詢資料或生成報表。 其他使用者的新增、更改或刪除不可見。
adopenunspecified
-1不指定游標的型別。
locktypeenum常量值
說明adlockbatchoptimistic
4執行多行批處理更新時使用這種型別。
adlockoptimistic
3樂觀鎖定,僅在呼叫update方法時鎖定。
adlockpessimistic
2悲觀鎖定,當記錄集開啟的時候將其鎖定。
adlockreadonly
1預設,用來開啟唯讀記錄。
adlockunspecified
-1不指定鎖的型別。
rs.movefirst '把記錄指標移動到第一條記錄。讀取當前游標指示的行。rs.movelast '把記錄指標移動到最後一條記錄。
rs.movenext '把記錄指標移動到下一條記錄。
rs.moveprevious '把記錄指標移動到上一條記錄。
dim valuevalue = rs("field1")
rs.addnew修改當前游標指示的行。rs("field1")=value1
rs("field2")=value2
rs("field3")=value3
rs.update
rs("field1")=value1rs("field2")=value2
rs.update
rs.fields.count '字段數量執行了select語句後recordset會處在開啟狀態,其他執行其他sql語句的recordset未處在開啟狀態,不需要關閉。rs.recordcount '資料集行數
rs.bof '如果當前的記錄位置在第一條記錄之前,則返回 true,否則返回 fasle。
rs.eof '如果當前記錄的位置在最後的記錄之後,則返回 true,否則返回 fasle。
在vbs中,離開物件作用域後會自動關閉。
rs.close配置鏈結伺服器使sql server資料庫引擎能夠訪問sql server例項之外的ole db資料來源。set rs=nothing
conn.close
set conn=nothing
在sql server management studio中,開啟物件資源管理器,展開「伺服器物件」,右鍵單擊「鏈結伺服器」,然後單擊「新建鏈結伺服器」。
在「常規」頁中,「鏈結伺服器」一欄中為鏈結伺服器命名,並填入其他資訊。
在指定的鏈結伺服器上執行傳遞查詢。語法如下 :
openquery ( linked_server ,'query' )引數:openquery 可以在查詢的 from 子句中引用,就好象它是乙個表名
select * from openquery (oraclesvr, 'select name from joe.titles where name = ''newtitle''');通過opendatasource()函式直接查詢ole db資料來源,語法如下:
opendatasource ( 'provider_name', 'init_string' )示例如下:
select groupname, name, departmentidfrom opendatasource('msoledbsql', 'server=seattle1;database=adventureworks2016;trustservercertificate=yes;trusted_connection=yes;').humanresources.department
order by groupname, name;
訪問資料庫 訪問資料庫
程式執行的時候,資料都是在記憶體中的。當程式終止的時候,通常都需要將資料儲存到磁碟上,無論是儲存到本地磁碟,還是通過網路儲存到伺服器上,最終都會將資料寫入磁碟檔案。而如何定義資料的儲存格式就是乙個大問題。如果我們自己來定義儲存格式,比如儲存乙個班級所有學生的成績單 名字成績 michael99 bo...
訪問資料庫 資料庫並行訪問
作者姓名 neo chen 陳景峰 暱稱 netkiller 呼號 bg7nyt 手機 86 13113668890 多維度架構 知乎 www.zhihu.com 這裡主要講述有關開發中遇到的資料庫並行問題 防止並行顯示背景 我們有乙個order訂單表,工作流如下 建立訂單 訂單分配 訂單審核 批准...
常用資料庫訪問介面介紹 一
一直很忙,雖然不知道在忙些什麼。也有些煩心的事兒。但工作還是要做的,即使是為了給自己乙個交代。資料庫訪問介面這些東西很煩,但有些東西無論你怎麼努力都是繞不過去的,最終還是要回來。就像中國從制度上跳過了資本主義社會一樣,還不是得回來補經濟課!用了差不多3天左右的時間,查了60頁左右的資料,總算大體上理...