C# 复制分离的SQL Server数据库时出错

C# 复制分离的SQL Server数据库时出错,c#,sql-server,C#,Sql Server,我正在用C#构建一个应用程序。作为一项要求,我需要将数据库从一个本地驱动器移动到另一个本地驱动器 在阅读了论坛后,有人建议,移动数据库的最佳方式是: 分离数据库 移动数据库 附加数据库 我能够使用以下代码成功分离数据库: userConn = new SqlConnection(userdatabase); userConn.Open(); addConn = new SqlConnection(addInfo); addConn.Open(); string UserString =

我正在用C#构建一个应用程序。作为一项要求,我需要将数据库从一个本地驱动器移动到另一个本地驱动器

在阅读了论坛后,有人建议,移动数据库的最佳方式是:

  • 分离数据库
  • 移动数据库
  • 附加数据库
我能够使用以下代码成功分离数据库:

userConn = new SqlConnection(userdatabase);
userConn.Open();

addConn = new SqlConnection(addInfo);
addConn.Open();

string UserString = "sp_detach_db @DBName, @skipchecks";

SqlCommand cmd = new SqlCommand(UserString, userConn);
cmd.Parameters.AddWithValue("@DBName", userConn.Database);
cmd.Parameters.AddWithValue("@skipchecks", false);
cmd.ExecuteNonQuery();
cmd.Dispose();

cmd = new SqlCommand(UserString, addConn);
cmd.Parameters.AddWithValue("@DBName", addConn.Database);
cmd.Parameters.AddWithValue("@skipchecks", false);           
cmd.ExecuteNonQuery();
cmd.Dispose();
这很有效。但是,我无法移动数据库文件。它抛出一个异常:

进程无法访问文件“*.mdf”,因为另一个进程正在使用该文件


你知道会出什么问题吗

实际上,ALTERDATABASE是一种更好的移动方式,而不是分离。Brent Ozar有一篇帖子提到了这一点…“更改数据库以更改文件路径,使其脱机,将文件复制到其新位置,并使其重新联机。它保持日志传送完整”:我会看一看。非常感谢。除此之外,在分离数据库之前,您需要将其置于单用户模式。。。