说明
我正在尝试将我的sql数据库复制为备份文件,一旦我登录,并重定向到backup.aspx
我点击备份按钮,它会提示我输出错误
如果我直接打开backup.aspx
我可以复制数据库而不会出现任何错误
我知道问题是我登录后我的数据库是连接的,所以它告诉我它正在被另一个进程使用
我想问的是,无论如何都可以解决这个问题?
我的目标是在页面加载时断开与db的连接,但我无法做到,它仍然提示我同样的错误
错误讯息:
进程无法访问文件'C:\ Users \ Roy \ Desktop \ backup fyp \ 10-18-2011 \ WebSite5 \ App_Data \ Database.mdf'因为它正在 被另一个过程使用。
按钮点击代码:
string time1 = DateTime.Now.ToString("dd-MM-yyyy hh-mmtt");
Directory.CreateDirectory(@"C:/SME-Online/" + time1);
string destination = @"C:/SME-Online/" + time1;
string source = Server.MapPath(@"~/App_Data");
File.Copy(Path.Combine(source, "Database.mdf"), Path.Combine(destination, "Database.mdf"), true);
File.Copy(Path.Combine(source, "Database_log.LDF"), Path.Combine(destination, "Database_log.LDF"), true);
答案 0 :(得分:2)
您应首先备份数据库,然后将* .bak文件复制为备份,这里有一些代码可以帮助您入门,当然您可以更改该查询或文件名生成代码以满足您的需求,请务必检查{{ 3}} T-SQL语句帮助。
public void BackupDatabase()
{
/// this method should get opened connection
SqlConnection conn = GetOpenedDBConnectionFromSomewhere();
string dbName = conn.Database;
string backupFName = "c:\\MSSQLData\\Backup\\" + dbName + "_" + DateTime.Now.Ticks.ToString() + ".bak";
string sql = "BACKUP DATABASE [" + conn.Database + "] TO DISK = '" + backupFName + "'" +
"WITH NOFORMAT, INIT, NAME = 'Backup of DB:" + dbName + "', SKIP, NOREWIND, NOUNLOAD, STATS = 10;";
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.ExecuteNonQuery();
}
}