我正在研究一個涉及使用數據庫的項目,我正在對它進行單元測試。現在測試會創建一個數據庫作爲.mdf
文件並使用它。如何覆蓋.mdf文件
我想要做的就是讓這個.mdf
文件放到其它地方的副本,並在每次測試之前替換原來的文件.mdf
與我剛剛作出的副本。問題是,當我嘗試這樣做時,它說該文件正在被另一個進程使用。我發現這個過程是sqlservr.exe
。
我的問題是:有沒有辦法阻止服務器使用該文件,以便我可以替換它?我已經嘗試過SQL Server BACKUP和RESTORE選項,但它們對我來說不夠好,因爲它們太慢了處理過程。
任何幫助將不勝感激。
UPDATE:
好了,多了幾分問題的信息。基本上我正在改進我的單元測試的性能。大多數測試需要連接到數據庫,所以我在.mdf
文件中有LocalDb。該文件在TestFixtureSetup
期間創建。然後,在每次測試之前(在SetUp
期間),通過SQL命令擦除數據庫。這似乎不是每個測試重新創建新數據庫的最有效方法。所以我嘗試了兩種截然不同的方法:
- 使用SQL BACKUP和RESTORE命令。這有效,但它增加了我的測試執行時間。
- 殺死
sqlservr.exe
進程,本地複製文件並重新啓動sqlservr.exe
。這也可以,但也會增加執行時間。
所以基本上我正在尋找如何提高重建一個完全空的數據庫的性能的建議。
停止服務,複製,然後再次啓動? –
https://msdn.microsoft.com/en-AU/library/ms187858.aspx分離可能工作,然後將其附加回 –