/// <summary> /// 备份输入库 /// </summary> /// <param name="path">备份后的文件的保存路径</param> public void BackupDatabase(string path) { DbSqlHelper.ExcuteNullQuery("backup DATABASE Test to disk=@path WITH INIT" , this.GetParameter("@path", path)); } /// <summary> /// 还原数据库 /// </summary> /// <param name="path">备份文件的路径</param> public void RestoreDatabase(string path) { StringBuilder sb = new StringBuilder("use master "); sb.Append("declare @count int,@num int,@id int,@tempStr varchar(1000) "); sb.Append("select @count=count(spid) from sysprocesses where dbid=(select dbid from sysdatabases where name='Test') "); sb.Append("set @num=1 select @id = dbid from sysdatabases where name='Test' "); sb.Append("while(@num<=@count) begin set @tempStr='' "); sb.Append("set @tempStr='declare @str varchar(1000) select top 1 @str=''kill ''+cast(spid as varchar(5)) from sysprocesses' "); sb.Append("set @tempStr=@tempStr+' where dbid='+str(@id) "); sb.Append("set @tempStr=@tempStr+' and spid not in (select top '+str(@num-1)+' spid from sysprocesses where dbid='+str(@id)+')' "); sb.Append("set @tempStr=@tempStr+' exec (@str)' "); sb.Append("exec (@tempStr) set @num=@num+1 end "); sb.Append("restore DATABASE Test from disk=@path WITH replace"); Console.WriteLine("\n" + sb.ToString() + "\n"); DbSqlHelper.ExcuteNullQuery(sb.ToString(), this.GetParameter("@path", path)); SqlConnection.ClearAllPools(); }
void BadDB() { SqlConnection conn = new SqlConnection("连接字符串"); SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = "backup 数据库名 to disk = '路径+文件名"; conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); }
/// 备份输入库
/// </summary>
/// <param name="path">备份后的文件的保存路径</param>
public void BackupDatabase(string path)
{
DbSqlHelper.ExcuteNullQuery("backup DATABASE Test to disk=@path WITH INIT"
, this.GetParameter("@path", path));
} /// <summary>
/// 还原数据库
/// </summary>
/// <param name="path">备份文件的路径</param>
public void RestoreDatabase(string path)
{
StringBuilder sb = new StringBuilder("use master ");
sb.Append("declare @count int,@num int,@id int,@tempStr varchar(1000) ");
sb.Append("select @count=count(spid) from sysprocesses where dbid=(select dbid from sysdatabases where name='Test') ");
sb.Append("set @num=1 select @id = dbid from sysdatabases where name='Test' ");
sb.Append("while(@num<=@count) begin set @tempStr='' ");
sb.Append("set @tempStr='declare @str varchar(1000) select top 1 @str=''kill ''+cast(spid as varchar(5)) from sysprocesses' ");
sb.Append("set @tempStr=@tempStr+' where dbid='+str(@id) ");
sb.Append("set @tempStr=@tempStr+' and spid not in (select top '+str(@num-1)+' spid from sysprocesses where dbid='+str(@id)+')' ");
sb.Append("set @tempStr=@tempStr+' exec (@str)' ");
sb.Append("exec (@tempStr) set @num=@num+1 end ");
sb.Append("restore DATABASE Test from disk=@path WITH replace");
Console.WriteLine("\n" + sb.ToString() + "\n");
DbSqlHelper.ExcuteNullQuery(sb.ToString(), this.GetParameter("@path", path));
SqlConnection.ClearAllPools();
}
{
SqlConnection conn = new SqlConnection("连接字符串");
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "backup 数据库名 to disk = '路径+文件名";
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}