2013-03-13 190 views
0

我有一個客戶端應用程序,它可以處理來自給定數據庫的巨大的1個表格,並將一些統計數據插入另外10個表格。爲了禁止其他應用程序使用數據庫,我將它轉移到單用戶模式。所有工作正常,但只有1個連接需要很長時間來處理和插入所有數據。如果我使用多個線程和多個連接而沒有「單用戶模式」,則時間會減少大約5次。 現在的問題是,是否有另一種方式阻止其他應用程序訪問數據庫,但允許從我的應用程序使用相同的多個連接?阻止訪問數據庫

+0

爲什麼不鎖定有問題的表? – 2013-03-13 19:28:33

+0

「爲了禁止其他應用程序使用數據庫,我將其轉移到單用戶模式」。爲什麼?是否在任何情況下停止使用該表的其他應用程序,或僅在您寫入該表時?如果僅在寫入它時,他們爲什麼不能讀取你沒有寫入的數據(即以前提交的數據) 請參見[http://stackoverflow.com/questions/3662766/sql-server-how-to-lock- a-table-until-a-stored-procedure-finishes]如何鎖定事務中的整個表。 – 2013-03-13 19:44:57

+0

@lc:如果我從我的應用程序鎖定表,它會阻止其他人讀/寫入他們? – Eugen 2013-03-13 20:16:28

回答

0

您可以在客戶端和數據庫之間引入一個圖層。

該層可以跟蹤客戶端,並只允許一個人訪問數據庫進行傳輸。

該層將是唯一允許直接訪問數據庫的進程。

+0

目前不可能,涉及太多的應用程序。可能有效的 – Eugen 2013-03-13 20:15:12

1

如何使用登錄觸發器?創建一個允許登錄的用戶名錶。如果用戶不在表格中,請將其回滾,以免他們登錄。

Michael Harmon

+0

,會檢查它。 – Eugen 2013-03-14 23:51:15