备份:
backup database 数据库名to disk='路径+文件名' with init"
还原:
restore database 数据库名from disk='路径+文件名' 

解决方案 »

  1.   

    /// <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();
            }
      

  2.   

    void BadDB()
    {
        SqlConnection conn = new SqlConnection("连接字符串");
        SqlCommand cmd = conn.CreateCommand();
        cmd.CommandText = "backup 数据库名 to disk = '路径+文件名";
        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();
    }