我試圖分離我的本地數據庫.mdf將它複製到另一個文件夾中,並在啓動時附加新文件,並在關閉時將其複製到舊文件夾。分離本地數據庫.mdf,複製並附加新文件
這似乎在推出作品,但我有一個錯誤,當表格收盤:
該進程無法訪問文件「C:\ ProgramData \ MyData的\ db1.mdf」,因爲它正在使用另一個過程。
這是我的代碼:
public Form()
{
InitializeComponent();
DetachDatabase();
CopyDb();
AttachDatabase();
AppDomain.CurrentDomain.SetData("DataDirectory", Data.MyNewFolder);
}
public static bool DetachDatabase()
{
try
{
string connectionString = String.Format(@"Data Source=(LocalDB)\v11.0;Initial Catalog=master;Integrated Security=True");
using (var cn = new SqlConnection(connectionString))
{
cn.Open();
SqlCommand cmd = cn.CreateCommand();
cmd.CommandText = String.Format("exec sp_detach_db '{0}'", "db1");
cmd.ExecuteNonQuery();
cmd.CommandText = String.Format("exec sp_detach_db '{0}'", "db2");
cmd.ExecuteNonQuery();
return true;
}
}
catch
{
return false;
}
}
public static bool AttachDatabase()
{
try
{
string connectionString = String.Format(@"Data Source=(LocalDB)\v11.0;Initial Catalog=master;Integrated Security=True");
using (var cn = new SqlConnection(connectionString))
{
cn.Open();
SqlCommand cmd = cn.CreateCommand();
cmd.CommandText = String.Format("exec sys.sp_attach_db db1, 'db1.mdf'");
cmd.CommandText = String.Format("exec sys.sp_attach_db db2, 'db2.mdf'");
cmd.ExecuteNonQuery();
return true;
}
}
catch
{
return false;
}
}
private void Frm_FormClosing(object sender, FormClosingEventArgs e)
{
LocalDB.DetachDatabase();
CopyDb();
LocalDB.AttachDatabase();
}
什麼是做到這一點的好辦法嗎?
感謝
SQL Server是一個**基於服務器的**數據庫系統 - 這樣的**最好的辦法**是*** ***不與'.mdf'文件小提琴和周圍只需將數據庫**留在服務器**上並連接到它並使用它 –