我的應用程序後,連接到新創建的數據庫將定期連接到MyDatabase的和執行查詢。以前的連接錯誤
我需要處理,其中MyDatabase的數據庫中不存在,需要創建的情況下。我在做什麼現在每次我首先連接到主數據庫,並運行這樣的事情是:
SELECT * FROM sysdatabases WHERE NAME='MyDatabase'
確定MyDatabase的是否存在。如果沒有,我創建它,然後繼續連接到MyDatabase並執行查詢。
打開到主數據庫的單獨連接和執行查詢每個時間似乎不必要(即使連接彙集)。爲什麼我不能直接連接到MyDatabase? 99%的時間會成功,我可以執行查詢。 1%的失敗次數我可以檢測到MyDatabase丟失,並在該點創建它的權利?
但當我嘗試這個我打了一個問題。如果我試圖連接到MyDatabase並且它不存在,我得到一個SqlException
Cannot open database MyDatabase requested by the login. The login failed.
很好。大。我可以捕獲任何SqlException,然後轉到主數據庫以確定MyDatabase不存在並創建它。
但創建後,當我現在嘗試連接到MYDATABASE我立即得到同樣的錯誤:
Cannot open database MyDatabase requested by the login. The login failed.
它看起來是不是要重新連接,而不是返回一個緩存結果。如果在嘗試連接數據庫之前等待10秒鐘,則連接成功。
我的問題是,這是預期的緩存(我猜的話),更重要的是有處理這種情況的最佳做法?在我可以使用的SqlConnection API中是否有緩存清除或超時設置?我可以實現我自己的超時延遲,但我想知道沒有更好的方法我錯過了。
創建數據庫需要多長時間?僅僅是這些文件目前正在服務器上創建,而且數據庫實際上還沒有準備好? – steoleary
它幾乎立即創建。我試過創建和連接沒有以前的錯誤,它工作正常。如果以前的連接失敗,行爲會有所不同。在這種情況下,如果我在10秒內嘗試再次連接,則會返回相同的錯誤。 –