2011-06-21 31 views
0

我現在有一個批處理過程,最多可能需要一個小時才能運行。這不是數據庫密集型的,只是有很多事情需要進行網絡調用。是否可以創建一個仍然允許ReadOnly請求的事務?

我有一個交易纏繞整個事情,所以如果出現任何問題,我會回滾。

是否有可能進行此事務,以便它只阻止寫入數據庫的請求而不是隻讀?如果不是,爲什麼不呢?這只是數據庫的自然限制嗎?

我在.net 4.0中,我正在使用TransactionScope來完成此任務。

+2

一個小時的交易?我瞭解這是否正確? –

+0

是啊... db在期間無法訪問。這只是一個非常糟糕的主意嗎? – Diskdrive

+1

這是一個可怕的想法。加載到臨時表中,然後批量傳輸它。 – jason

回答

1

不要這樣做。加載到臨時表中。操作完成後,將其批量傳輸到實際表格。

0

一般來說,像這樣的東西根本不會成功;大多數資源管理者在默認情況下不會讓事務持續很長時間,如果他們這樣做(如果涉及多個資源管理器),則根據正在更新/修改的數據量,提交事務的行爲可能需要很長時間的非常

如果您只是希望在您的過程中阻止數據庫訪問,則最好在數據庫中設置一個標誌,然後在應用程序中設置其他功能時失敗。

您的應用程序的範圍可能會影響標誌的存儲位置;如果只有一個實例正在運行,則可以將該標誌存儲在內存中,但是如果存在多個實例,則可能每次都需要檢查數據庫。

相關問題