示例#1
0
        /// <summary>
        /// Repairs the given corrupted database trying to recover all possible rows.
        /// </summary>
        public void RepairDb()
        {
            using (var eng = new SqlCeEngine(_connectionString))
            {
#if WindowsCE
                eng.Repair(null, RepairOption.RecoverCorruptedRows);
#else
                eng.Repair(null, RepairOption.RecoverAllPossibleRows);
#endif
            }
        }
示例#2
0
        /// <summary>
        /// Repairs a corrupted database. Call this method when <see cref="Verify"/> returns false.
        /// </summary>
        public void Repair()
        {
            using (var engine = new SqlCeEngine(ConnectionString))
            {
                engine.Repair(null, RepairOption.RecoverAllPossibleRows);
            }

            // Same thing using Reflection:
            //object sqlCeEngine = null;
            //try
            //{
            //	sqlCeEngine = SqlCeEngineType.InvokeMember(null, BindingFlags.CreateInstance, null, null, new object[] { ConnectionString });

            //	var repairOptionEnumType = SqlCeAssembly.GetType("System.Data.SqlServerCe.RepairOption");

            //	var repairOptionRecoverAll = repairOptionEnumType.GetField("RecoverAllPossibleRows").GetValue(repairOptionEnumType);

            //	SqlCeEngineType.InvokeMember("Repair", BindingFlags.InvokeMethod, null, sqlCeEngine, new[] { null, repairOptionRecoverAll });
            //}
            //catch (TargetInvocationException ex)
            //{
            //	AppEventController.LogError(ex.InnerException ?? ex);
            //	throw;
            //}
            //finally
            //{
            //	if (sqlCeEngine != null)
            //		SqlCeEngineType.InvokeMember("Dispose", BindingFlags.InvokeMethod, null, sqlCeEngine, null);
            //}
        }
示例#3
0
 public void RepairDatabaseRecoverAllOrFail(string connectionString)
 {
     using (SqlCeEngine engine = new SqlCeEngine(connectionString))
     {
         engine.Repair(connectionString, RepairOption.RecoverAllOrFail);
     }
 }
示例#4
0
 public void RepairDatabaseDeleteCorruptedRows(string connectionString)
 {
     using (SqlCeEngine engine = new SqlCeEngine(connectionString))
     {
         engine.Repair(connectionString, RepairOption.DeleteCorruptedRows);
     }
 }
示例#5
0
 public void RepairDatabaseDeleteCorruptedRows(string connectionString)
 {
     using (SqlCeEngine engine = new SqlCeEngine(connectionString))
     {
         engine.Repair(connectionString, RepairOption.DeleteCorruptedRows);
     }
 }
示例#6
0
 public void RepairDatabaseRecoverAllOrFail(string connectionString)
 {
     using (SqlCeEngine engine = new SqlCeEngine(connectionString))
     {
         engine.Repair(connectionString, RepairOption.RecoverAllOrFail);
     }
 }
示例#7
0
 public void RepairDatabaseRecoverAllPossibleRows(string connectionString)
 {
     using (SqlCeEngine engine = new SqlCeEngine(connectionString))
     {
         engine.Repair(connectionString, RepairOption.RecoverAllPossibleRows);
     }
 }
示例#8
0
 public void RepairDatabaseRecoverAllPossibleRows(string connectionString)
 {
     using (SqlCeEngine engine = new SqlCeEngine(connectionString))
     {
         engine.Repair(connectionString, RepairOption.RecoverAllPossibleRows);
     }
 }
示例#9
0
 public static void RepairDb(string fileName)
 {
     SqlCeEngine engine = new SqlCeEngine(TrialDataContext.GetConnectionString(fileName));
     if (!engine.Verify())
     {
         engine.Repair(null, RepairOption.RecoverAllOrFail);
     }
 }
示例#10
0
        public ActionResult Repair()
        {
            var engine = new SqlCeEngine(ConfigurationManager.ConnectionStrings["FeedsDbEntities"].ConnectionString);

            // Specify null destination connection string for in-place repair
            engine.Repair(null, RepairOption.RecoverAllOrFail);

            return View();
        }
示例#11
0
        public BaseGeneralService()
        {
            SqlCeEngine engine = new SqlCeEngine(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);

            if (false == engine.Verify())
            {
                //  MessageBox.Show("Database is corrupted.");
                engine.Repair(null, RepairOption.RecoverAllOrFail);
            }
        }
示例#12
0
        static LocalCeDbContext()
        {
            //不重建数据库结构
            //Database.SetInitializer<LocalCeDbContext>(new DropCreateDatabaseAlways<LocalCeDbContext>());
            Database.SetInitializer <LocalCeDbContext>(null);
            SqlCeEngine engine = new SqlCeEngine(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);

            if (false == engine.Verify())
            {
                engine.Repair(null, RepairOption.RecoverAllOrFail);
            }
        }
示例#13
0
        private void verify()
        {
            SqlCeEngine engine = new SqlCeEngine(connection.ConnectionString);

            if (!engine.Verify())
            {
                engine.Repair(connection.ConnectionString, RepairOption.RecoverCorruptedRows);
            }
            else
            {
                engine.Shrink();
            }
        }
示例#14
0
        /// <summary>
        /// Verifies the data base.
        /// </summary>
        /// <param name="path">The path.</param>
        /// <param name="contentProtected">if set to <c>true</c> [content protected].</param>
        /// <param name="password">The password.</param>
        /// <remarks>Documented by Dev03, 2009-04-30</remarks>
        public static void VerifyDataBase(string path, bool contentProtected, string password)
        {
            string connectionString = contentProtected ? MSSQLCEConn.GetFullConnectionString(path, password) : MSSQLCEConn.GetFullConnectionString(path);

            using (SqlCeEngine sqlEngine = new SqlCeEngine())
            {
                sqlEngine.LocalConnectionString = connectionString;
                sqlEngine.Repair(connectionString, RepairOption.RecoverAllPossibleRows);
                sqlEngine.Shrink();
                try { File.Delete(Path.ChangeExtension(path, ".log")); }
                catch { Debug.WriteLine("Can not delete logfile "); }
            }
        }
示例#15
0
        /// <summary>
        /// Try to repair a corrupted database file by connection string to it.
        /// </summary>
        /// <param name="connectionString">Connection string to the database file that should be repaired.</param>
        private static void RepairDatabaseFile(string connectionString)
        {
            if (string.IsNullOrWhiteSpace(connectionString))
            {
                throw new ArgumentNullException("connectionString");
            }

            using (var sqlCeEngine = new SqlCeEngine(connectionString))
            {
                //TODO: consider using different repair param
                sqlCeEngine.Repair(connectionString, RepairOption.RecoverAllOrFail);
            }
        }
        /// <summary>
        /// Calls the engine repair asynchronous.
        /// </summary>
        /// <returns>Task.</returns>
        public static Task CallEngineRepairAsync()
        {
            Task t = Task.Run(() =>
            {
                DatabaseCommands commands = new DatabaseCommands();

                using (SqlCeEngine engine = new SqlCeEngine(commands.GetConnectionString()))
                {
                    ConnectionStringSettings conSetting = new ConnectionStringSettings();
                    conSetting = ConfigHelper.save_new_connection(commands.GetConnectionString());

                    engine.Repair(conSetting.ConnectionString, RepairOption.RecoverAllPossibleRows);
                }
            });

            t.Wait();
            return(t);
        }
示例#17
0
        /// <summary>
        /// Répare la BD
        /// </summary>
        /// <param name="repairException"></param>
        /// <returns></returns>
        public bool Repair(out Exception repairException)
        {
            repairException = null;

            try
            {
                GetConnection().Close();
                using (SqlCeEngine engine = new SqlCeEngine(ConnectionString))
                {
                    engine.Repair(null, RepairOption.DeleteCorruptedRows);
                    return(true);
                }
            }
            catch (Exception innerRepairException)
            {
                repairException = innerRepairException;
            }
            return(false);
        }
    static void Main(string[] args)
    {
        SqlCeEngine engine =
            new SqlCeEngine("Data Source = C:\\Users\\SomeUser\\Documents\\SomeDB.sdf");

        if (false == engine.Verify())
        {
            Console.WriteLine("Database is corrupted.");
            try
            {
                engine.Repair(null, RepairOption.DeleteCorruptedRows);
            }
            catch (SqlCeException ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        Console.WriteLine("Press any key to continue.");
        Console.ReadLine();
    }
示例#19
0
        /// <summary>
        /// Handles the Click event of the cmdRepair control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="RoutedEventArgs"/> instance containing the event data.</param>
        public void cmdRepair_Click(object sender, RoutedEventArgs e)
        {
            DatabaseCommands commands = new DatabaseCommands();

            try
            {
                using (SqlCeEngine engine = new SqlCeEngine(commands.GetConnectionString()))
                {
                    ConnectionStringSettings conSetting = new ConnectionStringSettings();
                    conSetting = ConfigHelper.save_new_connection(commands.GetConnectionString());

                    engine.Repair(conSetting.ConnectionString, RepairOption.RecoverAllPossibleRows);
                }
            }
            catch (SqlCeException ex)
            {
                foreach (SqlCeError error in ex.Errors)
                {
                    //Error handling, etc.
                    MessageBox.Show(error.Message);
                }
            }
        }
示例#20
0
        public bool Verify()
        {
            bool result = false;

            using (SqlCeEngine engine = new SqlCeEngine(_connString))
            {
                result = engine.Verify(VerifyOption.Enhanced);
                if (!result)
                {
                    try { engine.Upgrade(); }
                    catch (Exception) { };

                    if (!engine.Verify(VerifyOption.Enhanced))
                    {
                        engine.Repair(null, RepairOption.RecoverCorruptedRows);
                    }

                    result = engine.Verify(VerifyOption.Enhanced);
                }
                engine.Dispose();
            }

            return(result);
        }
示例#21
0
 static void Main(string[] args)
 {
     Console.WriteLine("ExpressTaxi Database Repair Tool set.");
     Console.WriteLine("Attempting Database Repair Please Wait...");
     try
     {
         string      dataSource = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\ExpressTaxi.sdf";
         string      tmpfile    = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\ExpressTaxi.sdf.tmp";
         SqlCeEngine ce         = new SqlCeEngine(string.Format("Data Source = {0};" /*Password ='******'"*/, dataSource));
         ce.Repair(string.Format("Data Source={0};" /* Password ='******'"*/, tmpfile), RepairOption.DeleteCorruptedRows);
         ce.Dispose();
         System.IO.File.Delete(dataSource);
         System.IO.File.Move(tmpfile, dataSource);
         Console.WriteLine("Successfully completed the operation.");
     }
     catch (System.Exception ex)
     {
         Console.WriteLine();
         Console.WriteLine(ex.Message);
     }
     Console.WriteLine();
     Console.WriteLine("Press any key to continue...");
     Console.ReadLine();
 }
示例#22
0
        /// <summary>
        /// Repairs a corrupted database. Call this method when <see cref="Verify"/> returns false.
        /// </summary>
        public void Repair()
        {
            using (var engine = new SqlCeEngine(ConnectionString))
            {
                engine.Repair(null, RepairOption.RecoverAllPossibleRows);
            }

            // Same thing using Reflection:
            //object sqlCeEngine = null;
            //try
            //{
            //	sqlCeEngine = SqlCeEngineType.InvokeMember(null, BindingFlags.CreateInstance, null, null, new object[] { ConnectionString });

            //	var repairOptionEnumType = SqlCeAssembly.GetType("System.Data.SqlServerCe.RepairOption");

            //	var repairOptionRecoverAll = repairOptionEnumType.GetField("RecoverAllPossibleRows").GetValue(repairOptionEnumType);

            //	SqlCeEngineType.InvokeMember("Repair", BindingFlags.InvokeMethod, null, sqlCeEngine, new[] { null, repairOptionRecoverAll });
            //}
            //catch (TargetInvocationException ex)
            //{
            //	AppEventController.LogError(ex.InnerException ?? ex);
            //	throw;
            //}
            //finally
            //{
            //	if (sqlCeEngine != null)
            //		SqlCeEngineType.InvokeMember("Dispose", BindingFlags.InvokeMethod, null, sqlCeEngine, null);
            //}
        }
        public static void RepairDB()
        {
            var         connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["RegBase"].ConnectionString;
            SqlCeEngine engine           =
                new SqlCeEngine(connectionString);

            if (false == engine.Verify())
            {
                Console.WriteLine("Database is corrupted.");
                try
                {
                    engine.Repair(null, RepairOption.RecoverAllPossibleRows);
                }
                catch (SqlCeException ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
            using (RegBase regBase = new RegBase())
            {
                if (regBase.sexes.Count() == 0)
                {
                    regBase.sexes.Add(new sex()
                    {
                        value = "мужcкой"
                    });
                    regBase.sexes.Add(new sex()
                    {
                        value = "женcкий"
                    });
                }
                if (regBase.i_ua_domen_names.Count() == 0)
                {
                    regBase.i_ua_domen_names.Add(new i_ua_domen_names()
                    {
                        value = "i.ua"
                    });
                    regBase.i_ua_domen_names.Add(new i_ua_domen_names()
                    {
                        value = "ua.fm"
                    });
                    regBase.i_ua_domen_names.Add(new i_ua_domen_names()
                    {
                        value = "email.ua"
                    });
                }
                if (regBase.countrys.Count() == 0)
                {
                    regBase.countrys.Add(new country()
                    {
                        value = "Украина"
                    });
                    regBase.countrys.Add(new country()
                    {
                        value = "Россия"
                    });
                }
                if (regBase.citys.Count() == 0)
                {
                    regBase.citys.Add(new city()
                    {
                        value = "Харьков"
                    });
                    regBase.citys.Add(new city()
                    {
                        value = "Москва"
                    });
                }
                if (regBase.secret_questions.Count() == 0)
                {
                    regBase.secret_questions.Add(new secret_questions()
                    {
                        value = "Любимое блюдо"
                    });
                    regBase.secret_questions.Add(new secret_questions()
                    {
                        value = "Имя животного"
                    });
                    regBase.secret_questions.Add(new secret_questions()
                    {
                        value = "Памятная дата"
                    });
                    regBase.secret_questions.Add(new secret_questions()
                    {
                        value = "Девичья фамилия матери"
                    });
                    regBase.secret_questions.Add(new secret_questions()
                    {
                        value = "Прозвище в школе"
                    });
                    regBase.secret_questions.Add(new secret_questions()
                    {
                        value = "Номер паспорта"
                    });
                }
                if (regBase.settings.Count() == 0)
                {
                }
                regBase.SaveChanges();
            }
        }
示例#24
0
        internal void Execute(EngineAction action, string newConnectionString)
        {
            // Specify connection string for new database options; The following
            // tokens are valid:
            //      - Password
            //      - LCID
            //      - Encryption Mode
            //      - Case Sensitive
            //
            // All other SqlCeConnection.ConnectionString tokens are ignored
            //
            //  engine.Compact("Data Source=; Password =a@3!7f$dQ;");

            if (action != EngineAction.GetInfo)
            {
                using (SqlCeEngine engine = new SqlCeEngine(connectionString))
                {
                    switch (action)
                    {
                    case EngineAction.Undefined:
                        break;

                    case EngineAction.Shrink:
                        engine.Shrink();
                        Console.WriteLine("Database successfully shrunk");
                        break;

                    case EngineAction.Verify:
                        Console.WriteLine(engine.Verify(VerifyOption.Enhanced)
                                            ? "Database successfully verified"
                                            : "Database verification failed");
                        break;

                    case EngineAction.Compact:
                        engine.Compact(null);
                        Console.WriteLine("Database successfully compacted");
                        break;

                    case EngineAction.Upgrade:
                        engine.Upgrade();
                        Console.WriteLine("Database successfully upgraded");
                        break;

                    case EngineAction.Create:
                        engine.CreateDatabase();
                        Console.WriteLine("Database successfully created");
                        break;

                    case EngineAction.RepairDelete:
                        engine.Repair(null, RepairOption.DeleteCorruptedRows);
                        Console.WriteLine("Database successfully repaired");
                        break;

                    case EngineAction.RepairRecover:
                        engine.Repair(null, RepairOption.RecoverAllOrFail);
                        Console.WriteLine("Database successfully repaired");
                        break;

                    case EngineAction.SetOption:
                        engine.Compact(newConnectionString);
                        Console.WriteLine("Database option(s) successfully changed");
                        break;

                    default:
                        break;
                    }
                }
            }
            else if (action == EngineAction.GetInfo)
            {
                using (SqlCeConnection cn = new SqlCeConnection(connectionString))
                {
                    cn.Open();
                    List <KeyValuePair <string, string> > valueList = new List <KeyValuePair <string, string> >();
                    // 3.5 or later only API

                    valueList = cn.GetDatabaseInfo();
                    valueList.Add(new KeyValuePair <string, string>("Database", cn.Database));
                    valueList.Add(new KeyValuePair <string, string>("ServerVersion", cn.ServerVersion));
                    if (System.IO.File.Exists(cn.Database))
                    {
                        System.IO.FileInfo fi = new System.IO.FileInfo(cn.Database);
                        valueList.Add(new KeyValuePair <string, string>("DatabaseSize", fi.Length.ToString(CultureInfo.InvariantCulture)));
                        valueList.Add(new KeyValuePair <string, string>("Created", fi.CreationTime.ToShortDateString() + " " + fi.CreationTime.ToShortTimeString()));
                    }
                    valueList.Add(new KeyValuePair <string, string>(string.Empty, string.Empty));
                    valueList.Insert(0, new KeyValuePair <string, string>("SqlCeCmd", "Database Information"));

                    foreach (KeyValuePair <string, string> pair in valueList)
                    {
                        Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "{0}: {1}", pair.Key, pair.Value));
                    }
                }
            }
            return;
        }
示例#25
0
        /// <summary>
        /// Répare la BD
        /// </summary>
        /// <param name="repairException"></param>
        /// <returns></returns>
        public bool Repair(out Exception repairException)
        {
            repairException = null;

            try
            {
                GetConnection().Close();
                using (SqlCeEngine engine = new SqlCeEngine(ConnectionString))
                {
                    engine.Repair(null, RepairOption.DeleteCorruptedRows);
                    return true;
                }
            }
            catch (Exception innerRepairException)
            {
                repairException = innerRepairException;
            }
            return false;
        }
示例#26
0
 public void Repair()
 {
     using (SqlCeEngine engine = new SqlCeEngine(_connString))
         engine.Repair(null, RepairOption.RecoverCorruptedRows);
 }
示例#27
0
 /// <summary>
 /// Repairs a corrupted database. Call this method when <see cref="Verify"/> returns false. Applies only to SQL CE.
 /// </summary>
 internal static void Repair()
 {
     using (SqlCeEngine engine = new SqlCeEngine(Util.ConnectionString))
     {
         engine.Repair(null, RepairOption.RecoverAllPossibleRows);
     }
 }