簡體   English   中英

如何覆蓋.mdf文件

[英]How to overwrite .mdf file

我正在從事一個涉及使用數據庫的項目,並且正在對其進行單元測試。 現在,測試將數據庫創建為.mdf文件並使用它。

我想做的是在其他地方復制此.mdf文件,並在每次測試之前用我剛剛制作的副本替換原始.mdf文件。 問題是,當我嘗試這樣做時,它說文件正在被另一個進程使用。 我發現該進程是sqlservr.exe

我的問題是:有什么辦法可以阻止服務器使用該文件,以便我可以替換它? 我已經嘗試了SQL Server BACKUP和RESTORE選項,但是它們對我來說還不夠好,因為它們會大大減慢該過程的速度。

任何幫助將非常感激。

更新:

好的,有關此問題的更多信息。 基本上,我正在努力提高單元測試的性能。 大多數測試需要連接到數據庫,因此我在.mdf文件中有一個LocalDb。 該文件在TestFixtureSetup期間創建。 然后,在每次測試之前(在SetUp期間),將通過SQL命令擦除數據庫。 這似乎不是為每個測試重新創建新數據庫的最有效方法。 因此,到目前為止,我已經嘗試了兩種不同的方法:

  1. 使用SQL BACKUP和RESTORE命令。 這可行,但是會增加測試的執行時間。
  2. 終止sqlservr.exe進程,在本地復制文件並重新啟動sqlservr.exe 這也可以,但是也會增加執行時間。

因此,基本上,我正在尋找有關如何提高重新創建完全空數據庫的性能的建議。

  • 您可以停止服務,復制.MDF文件並重新啟動服務

  • 您還可以分離數據庫,復制它,然后重新附加它

  • 您也可以備份數據庫

更新:

若要啟動,停止,暫停,繼續或重新啟動SQL Server瀏覽器或SQL Server代理實例。

按照上面的說明啟動SQL Server配置管理器。 如果出現“用戶帳戶控制”對話框,請單擊“是”。

在“ SQL Server配置管理器”的左窗格中,單擊“ SQL Server服務”。

在結果窗格中,右鍵單擊SQL Server瀏覽器,SQL Server代理( MSSQLServer )或SQL Server代理()作為命名實例,

然后單擊開始,停止,暫停,繼續或重新啟動。

單擊“確定”關閉SQL Server配置管理器。

更新:

看到這張照片

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM