繁体   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