2015-11-03 91 views
0

我開發了一個「類CRM」的.Net軟件,用於訪問Microsoft SQLServer Express以從多個客戶端存儲數據。數據量很低(一個網絡中最多可以有8個人,一天中有5到10個條目)。 到目前爲止 - 沒有多少考慮 - 我一直創建一個單一的用戶與單一登錄(和相應的密碼)從任何客戶端登錄。這似乎工作正常,也爲併發訪問。一個或多個用於SQLServer訪問的數據庫用戶

現在,一個問題也隨之而來,其中一個客戶端她的計算機的一個重啓後,軟件似乎已經失去了保存的數據 - 我們姑且稱之爲「項」 - 從上屆會議,只是他們在下次重啓之後「再次奇蹟般地出現」。奇怪的是,我的軟件在單個事務中保存了輸入條目,並且在我的末尾沒有記錄錯誤。所有條目都從客戶端軟件中消失 - 即在第一次重新啓動時不能被讀取/不在數據庫中 - 並且所有條目在下次重新啓動時都會再次出現 - 即。在數據庫中,可以讀取。 用戶報告的一件事是,她偶然關閉了她的機器(偶然地託管服務器的機器),而另一個客戶機仍然連接。該客戶報告沒有丟失的條目。

對不起,由於缺乏對這個問題的詳細信息和低保真技術描述,但我現在無法從Express服務器訪問日誌文件 - 如果有的話 - 我絕對不是SQLServer的 - 精明。

但我現在的問題是:這可以以任何方式連接到兩個客戶端通過相同的用戶和登錄分別獨立連接的事實? 每個客戶最好是有單獨的用戶(登錄?)嗎?它是不是錯了?或者這可能不是任何問題的原因(然後我不會經歷創建單獨用戶的麻煩)。

+0

我不明白這是如何連接到使用相同連接憑證的用戶。 你試過複製這個問題嗎? 你確定數據不在數據庫中嗎?奇怪的是,一個入口丟失,然後奇蹟般地再現。 –

+0

它現在在數據庫中!我正在談論**三個**單獨的會議。以我的解釋出現在這裏:在我看來,就像**第一次會議的「日記」**在某種程度上還沒有完成(這很奇怪,因爲我把單個保存操作放在單獨的事務中),而是與**第二次會議**的最新變化一起進行彙編,因此僅在第三次會議中出現**所有來自第一次會議和第二次會議的變化都是「可見的」,意味着它們已經從數據庫中成功加載(第三)會議開始。 – themightylc

回答

2

如果您在服務器上運行應用程序,則不需要連接多個登錄名。只有一個登錄,這是應用程序。應用程序負責數據訪問。如果你能向我們展示保存數據的代碼,解決這個問題就容易多了。您是否使用SQL命令來保存數據或EntityFramework?

注意:在數據庫上提交事務後,它將永遠不會從數據庫中刪除。所以檢查你的代碼。它可能根本沒有提交到數據庫。

+1

這是我目前正在尋找的答案。我會檢查我的代碼。我使用System.Data.SQL並使用字符串資源自己構建SQL命令。我試圖讓我的所有命令和連接都在使用塊中,這就是爲什麼我不明白事務不能如何提交,但當然可能很容易出現疏漏。但這是另一個問題。 – themightylc

1

你如何連接到SQL?一些ORM,比如nHibernate,可以將事務顯示給當前用戶,而不是其他用戶,直到提交。

沒有理由對這麼少的用戶使用單獨的連接。這聽起來像是一個代碼問題,而不是連接問題。

相關問題