【发布时间】:2013-03-28 23:19:04
【问题描述】:
备份
string connectionString1 = (@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|Database1.mdf;Database=Database1;Integrated Security=True; User Instance=True");
SqlConnection cn = new SqlConnection(connectionString1);
cn.Open();
SqlCommand cmd = new SqlCommand();
SqlDataReader reader;
cmd.CommandText = @"BACKUP DATABASE Database1 TO DISK = 'C:\SRI2Works.bak'";
cmd.CommandType = CommandType.Text;
cmd.Connection = cn;
reader = cmd.ExecuteReader();
cn.Close();
MessageBox.Show("Database Backup Successfull.");
恢复
string connectionString1 = (@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|Database1.mdf;Database=Database1;Integrated Security=True; User Instance=True");
SqlConnection cn = new SqlConnection(connectionString1);
cn.Open();
SqlCommand cmd = new SqlCommand();
SqlDataReader reader;
cmd.CommandText = @"use master; RESTORE DATABASE Database1 FROM DISK = 'C:\SRI2Works.bak'";
cmd.CommandText = "DBCC CHECKDB ('Database1')";
cmd.CommandType = CommandType.Text;
cmd.Connection = cn;
reader = cmd.ExecuteReader();
cn.Close();
MessageBox.Show("Database Restored Successfull.");
此代码运行成功,但未进行任何更改。
【问题讨论】:
-
你是如何验证代码确实被执行的?消息框触发了吗?
-
文件
C:\SRI2Works.bak真的写了吗?而且,实际上,您的还原命令仅执行DBCC CHECKDB ('Database1'),它替换了上面一行中设置的CommandText。 -
@ThomasGerstendörfer 好收获! OP 应该使用 SQL Profiler 来验证是否实际发送了预期的命令。
-
我不认为您可以对在 SQL Server Express 中使用
AttachDbFileName=附加的.mdf文件使用通常的BACKUP和RESTORE命令。据我所知,您的数据库必须附加到 SQL Server 实例,才能使用BACKUP DATABASE... 进行备份 -
签出How to Backup and Restore SQL Server Express databases - 附加的“自动附加”数据库名称与
.mdf文件(包括驱动器和目录)的完整路径相匹配在执行BACKUP和RESTORE时,您需要使用该完整路径作为数据库名称
标签: c# sql-server backup restore