同一臺電腦運行了兩個相同的SQL SERVER資料客戶端,可否分別操作同一個SQL資料庫
在同一時間里對同一個SQL SERVER資料庫進行添加資料,洗掉等操作。
uj5u.com熱心網友回復:
DataSnap三層,通過IP地址和埠號,登記的,同一臺電腦連接遠程服務而言,是不能區別IP地址的。因此,一臺電腦只使用一個客戶端。uj5u.com熱心網友回復:
當然可以。從SQL Server服務器角度看,一臺電腦運行N個客戶端,和N臺電腦各自運行一個客戶端是沒有區別的。如果你的問題是多個客戶端對sql資料庫的同一資料進行修改是否會造成沖突的話,這個也是沒有問題的,因為SQL有事務(Transacton)管理機制。
uj5u.com熱心網友回復:
主要取決于連接方式。uj5u.com熱心網友回復:
1、B/S 模式,通過瀏覽器訪問,對于同一臺電腦二個瀏覽器的訪問,通常使用cookie,來區別。2、C/S 模式,通過客戶端訪問,對于同一臺電腦二個客戶端的訪問,就是同一人的訪問,使用上是無區別的。
3、正常情況下,二個客戶端的訪問,如同一個客戶端的訪問。此時,同一臺電腦運行了兩個相同的SQL SERVER資料客戶端,可以分別操作同一個SQL資料庫進行操作,但意義不大。
4、如果要讓同一臺電腦二個客戶端的訪問,視如不同的客戶,就得在服務器端的處理資料時,每條陳述句都得加入客戶的識別碼。這樣,通過SQL陳述句操作時,加入識別碼。
uj5u.com熱心網友回復:
delphi的話, remobject不錯!uj5u.com熱心網友回復:
可以,跟兩臺電腦各運行一個無差別uj5u.com熱心網友回復:
可以,操作資料注意加鎖。uj5u.com熱心網友回復:
樓上的朋友回答很詳細了,是可以的,關鍵在于識別碼的區別。uj5u.com熱心網友回復:
識別碼是什么東西?uj5u.com熱心網友回復:
為什么會不行呢,sql 強大到你難以致信。uj5u.com熱心網友回復:
答案:可以。這是一個多用戶、并發、共享的概念。
你要準備好的是處理資源的并發和資料共享的思路。
比如:洗掉。
一個客戶端洗掉了資料,另一個客戶端沒有及時更新,也要洗掉同樣的資料,就會產生不可預料的錯誤。
又如:查詢。
一個客戶端增加了新的資料,但另一個客戶端沒有及時更新,就會提示找不到資料。
還有:更新。
一個客戶端更新了資料,另一個客戶也對同一條資料進行更新,那么前一個客戶端看到的資料就不是最新的了。
......
總結:你對資料操作完成后,如果有必要你得告訴其他客戶端進行更新或其他操作。
建議:1.盡量使用結構化SQL陳述句對資料進行操作(如:使用Query.Execut來完成資料插入),盡量避免使用Query.Edit;。。。Query.Post;之類的陳述句。
2.盡量使用事務。就是Connection.BeginTran;...Connection.CommitTran;
uj5u.com熱心網友回復:
完全沒問題!uj5u.com熱心網友回復:
此問題,歸納一句話:可以。uj5u.com熱心網友回復:
可以,但是先提交先入,事物處理,鎖處理好,其實MSSQL別說兩個幾千個都行uj5u.com熱心網友回復:
絕對可以,我開發的客戶端在同一臺電腦是同時可以開多個的,只需要在保存時用事務來提交就沒問題下面是D7 + ADO的例子
try
if PubData1.Con1.InTransaction then //ADOConnection清除當前事務
PubData1.Con1.RollbackTrans;
PubData1.Con1.BeginTrans; //ADOConnection開始事務
// 開始寫你的保存陳述句
//此時還沒有真正提交到資料庫
PubData1.Con1.CommitTrans; //這句才表示提交
MessageDlg('保存成功!',mtInformation,[mbOK],0);
except
on E:Exception do
begin
PubData1.Con1.RollbackTrans; //如果提交資料出錯就要回滾,這句很重要
MessageDlg('資料保存失敗!原因是:'+#13#10+E.Message,mtWarning,[mbOK],0); //報告出錯的內容
end;
end;
uj5u.com熱心網友回復:
什么叫兩個相同的sql server資料客戶端?1、一個SQL server2014,一個SQL server2017,同時運行,設定相同路徑,使用同一個資料庫,可以。我就是這么干的。
2、兩個2014或2017也行,只要你能運行起來。我的32位win7+2014沒問題。
3、一個VB.net,一個delphi,兩個應用對一個資料庫,沒問題,我就是一個資料庫對了三個不同應用程式,還有一個PB。
4、兩個都是delphi,對應一個資料庫,3都沒問題,這個更問題了。
uj5u.com熱心網友回復:
理論上應該可以的uj5u.com熱心網友回復:
delphi用 ADOConnection1 連接,不用擔心這個問題,我現在主界面就有三個 ADOConnection 連接三個資料庫,而客戶端就更多,可以說是 N對N的關系,完全沒問題。uj5u.com熱心網友回復:
DataSnap 還有這樣的限制?
uj5u.com熱心網友回復:
理論上不存在問題的,只存在什么呢?不同客戶端同時洗掉相同的一條記錄,會發生并發沖突,而且也是可以由資料庫回傳錯誤標識的,所以,其實是并不存在問題,只是你需要程式中識別這種不應該發生的錯誤就可以了。uj5u.com熱心網友回復:
可以,在資料提交代碼中處理好并發沖突就沒問題uj5u.com熱心網友回復:
當然可以. 多用戶并發操作!!!轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/29437.html
標籤:數據庫相關
