非同步sql
① 2008非同步圖畫失敗
sqlserver2008不支持非同步模式。
2008非同步圖畫失敗可能是因為sqlserver2008不支持非同步模式,需要升級,所以會出現提示為,此sqlserver版本不支持修改事務安全模式,alterdatabase失敗。
② 怎麼使程序與sql server非同步執行請達人指教!!!
這種問題我早就碰過了,使用
多線程
是一種非常不好的選擇,你的系統隨時都會崩潰。
辦法其實非常簡單,你只要使用ADO非同步操作就可以了,完全不必建立多線程,當然這涉及ADO的高級應用,今天心情好,教你幾招!(下面是我在VB中使用過的方法,DELPHI中同樣也能使用ADO非同步操作訪問SQLSERVER)
之前先與SQL
SERVER建立一個CONNECTION對象,將其CURSORLOCATION屬性設置為adUseClient
然後用ADO
CONNECTION的Execute方法非同步執行
存儲過程
即可
例如:con.CursorLocation
=
adUseClient
dim
strSQL
as
String
strSQL="SQL語句或存儲過程名及其參數"
'語法必須正確
con.Execute
strSQL,
,
adAsyncExecute
'adAsyncExecute指令非同步操作
這樣你的
應用程序
就不用等待存儲過程執行完畢後才可執行後續
代碼
了。
你還可以使用ADO
CONNECTION對象的ExecuteComplete事件在執行完存儲過程後
通知你的應用程序執行相應的動作,例如MSGBOX等之類的東西,具體的實現代碼你自己去查ADO聯機手冊。
另外順便提一下,如果對於一個執行了很長時間都未能完成的查詢,你別指望使用貌似很行的ADO的CANCEL方法,立即取消一個正在執行的ADO非同步操作,即使在更新版本的ADO.net
3.5也是如此(非要等到超時後才能生效),真不明白微軟的工程師們是如何想的!誰要是能給出
解決方法
,我獎他300分,外加現金若干。
答復補充問題:
「四樓的大哥
我還想問一下
如果我在這個存儲過程還沒有執行完成的時候
其他客戶端又調用了這個存儲過程
會不會出錯呢???我不太清楚一個存儲過程還沒有執行完的時候
是否可以再次調用
請指教
謝謝!!!!」
不會的,因為SQLSERVER
引擎
會處理這些並發問題(自動使用事務處理,微軟的工程師們早就想到這些問題了,請放心使用)
③ 如何進行異構資料庫同步
資料庫同步有很多方法,這里不討論了,我這里只針對異構資料庫.那什麼是異構資料庫呢,我們先看下定義(引用)
異構資料庫系統是相關的多個資料庫系統的集合,可以實現數據的共享和透明訪問,每個資料庫系統在加入異構資料庫系統之前本身就已經存在,擁有自己的DMBS。異構資料庫的各個組成部分具有自身的自治性,實現數據共享的同時,每個資料庫系統仍保有自己的應用特性、完整性控制和安全性控制。異構資料庫系統的異構性主要體現在以下幾個方面:
計算機體系結構的異構
各個參與的資料庫可以分別運行在大型機、小型機、工作站、PC或嵌入式系統中。
基礎操作系統的異構
各個資料庫系統的基礎操作系統可以是Unix、Windows NT、 Linux等。
DMBS本身的異構
可以是同為關系型資料庫系統的Oracle、 SQL Server等,也可以是不同數據模型的資料庫,如關系、模式、層次、網路、面向對象,函數型資料庫共同組成一個異構資料庫系統。
在轉換的過程中,有時要想實現嚴格的等價轉換是比較困難的。首先要確定兩種模型中所存在的各種語法和語義上的沖突,這些沖突可能包括:
命名沖突:即源模型中的標識符可能是目的模型中的保留字,這時就需要重新命名。
格式沖突:同一種數據類型可能有不同的表示方法和語義差異,這時需要定義兩種模型之間的變換函數。
結構沖突:如果兩種資料庫系統之間的數據定義模型不同,如分別為關系模型和層次模型,那麼需要重新定義實體屬性和聯系,以防止屬性或聯系信息的丟失。
異構資料庫同步的解決方法主要有以下幾種:
1.建立觸發器記錄表的變化情況,在源資料庫建立增、刪、改觸發器,然後根據變化登記表進行處理.優點是充分結合業務進行處理,保持數據的一致性、完整性,實時性較強,對多個數據源合並有非常大的優勢,我們現在也是採用這種方式來同步的。
2.日誌:通過分析源資料庫日誌,來獲得源資料庫中的變化的數據。ORCLE 的 非同步 CDC (Asynchronized CDC) 就是使用這種方式,但缺點是有一定延時.