2014-11-05 25 views
0

我有一個訪問數據庫,它有從另一個訪問數據庫鏈接到它的表以保存數據。每天,實驗室管理員通過單擊按鈕來運行一個進程,該進程將數據從該數據庫傳輸到MS SQL Server數據庫,然後從Access數據庫中刪除數據。我繼承了這些數據庫,沒有時間或權力來改變數據庫結構,我們將用一個新的LIMS完全取代訪問數據庫,我們正在明年購買和實施該LIMS。訪問vba SQL刪除查詢現在停滯並且在工作幾個月後從未執行

我的問題是,其中一個DELETE SQL查詢已停止執行。每當我執行這個查詢時,數據庫都會掛起(讓它長達20分鐘),直到我拉起任務管理器並終止應用程序。我試圖將SQL查詢從VBA環境中取出,並通過MS Access查詢運行它,並獲得相同的結果。所以基本上它工作了很長一段時間(去年八月感覺),現在它已停止工作。

這裏是DELETE語句的SQL命令:然後就是SQL字符串是通過VBA函數執行

strSQL = "DELETE [TableName].* " _ 
    & "FROM [TableName] " _ 
    & "WHERE [TableName].[Run ID] NOT IN (SELECT [Run ID] FROM [SecondTableName] " _ 
    & "WHERE [Run ID] IS NOT NULL)" 

。我們在這個程序和數據庫的其他地方使用這個函數幾十次,所以我知道它不是這樣。我也知道上面的SQL的工作原理是因爲它工作了一年多,現在當我運行該語句時數據庫掛起。表中沒有無效的數據信息正在從中刪除,我們先檢查了這一點。我們也嘗試過對數據庫進行壓縮和修復,因爲我們擔心這是數據庫中的一種腐敗現象,儘管這並不排除可能出現的情況。

感謝您的幫助,如果您有任何問題可以幫助您更好地瞭解此問題,請告知我們。

+3

我假設你已經嘗試過一個'SELECT'版本的數據集,你試圖刪除併成功得到這個?兩個表中的記錄數量都發生了顯着變化? – ashareef 2014-11-05 21:56:28

+0

@ashareef是的,我可以打開表格,然後我可以一次刪除一行或多行選擇。對不起,這是我應該添加到最初問題的重要信息。 – DotN3TDev 2014-11-06 14:47:38

回答

0

我不幸沒有一個具體的這個是什麼錯誤的答案給你,但我會寫出我將如何處理調試。這可能是非常明顯的,你已經測試過,但我是一個雙重檢查即使是最微不足道的東西的支持者。即使SQL沒有變化,檢查SQL的原因不是檢查SQL的有效性,而是要確定數據庫端是否沒有任何更改(例如,大量新記錄導致嵌套查詢過大導致超時,表被鎖定等)

檢查查詢SELECT [Run ID] FROM [SecondTableName] WHERE [Run ID] IS NOT NULL;,並確保它返回你所期望的。

檢查查詢DELETE [TableName].* "FROM [TableName] WHERE [TableName].[Run ID] IN (<put in a test value>);。這可能涉及一些測試記錄

檢查查詢DELETE [TableName].* "FROM [TableName] WHERE [TableName].[Run ID] NOT IN (<put in a test values>);。這可能涉及製作表格的副本並使用該表格或在WHERE語句中添加其他條件,以便您可以在現有表格中使用測試記錄。由於它在訪問中,我只會複製副本,除非它非常大。

畢竟,如果你還沒有發現任何問題,那麼我很遺憾地沒有想法。