天天看點

.net mssql自己封裝的 備份/還原 資料庫方法

       #region 資料庫備份 BackupData

        /// <summary>

        /// 資料庫備份

        /// </summary>

        /// <param name="dir">MapPath轉換過的備份檔案目錄</param>

        /// <param name="dbname">資料庫名稱</param>

        /// <returns>傳回string值為空表示備份成功</returns>

        public static string BackupData(string dir, string dbname)

        {

            string ErrorString = "";

            string bakpath = string.Format("{0}/bak{1}.bak", dir, Utility.timestring);///完整的路徑

            string strSql2 = string.Format("backup database {0} to disk='{1}'", dbname, bakpath);

            using (SqlConnection conn = new SqlConnection(connectionString))

            {

                using (SqlCommand cmd = new SqlCommand(strSql2, conn))

                {

                    try

                    {

                        conn.Open();

                        cmd.ExecuteNonQuery();

                    }

                    catch (Exception er)

                        ErrorString = er.Message;

                }

            }

            return ErrorString;

        }

        #endregion

        #region 還原資料庫(還原資料庫要有權限才能還原成功)RestoreData

        /// 還原資料庫(還原資料庫要有權限才能還原成功)

        /// <param name="bakpath">MapPath轉換過的備份檔案路徑</param>

        /// <returns>傳回string值為空表示還原成功</returns>

        public static string RestoreData(string bakpath, string dbname)

            ///這裡改成資料庫管理者帳号和密碼

            //"Data Source=PKM-PC\\SQL05;Initial Catalog=dbtest;User Id=**;Pwd=****";

            string cmdtxt = string.Format("use master restore database {0}  from disk='{1}'", dbname, bakpath);

            using (SqlConnection Conn = new SqlConnection(connectionString))

                try

                    using (SqlCommand cmd = new SqlCommand(cmdtxt, Conn))

                        Conn.Open();

                catch (Exception er)

                    ErrorString = er.Message;