| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS SQL Server > ms sql compact разрушительный сбой |
| Автор: chipik 7.9.2016, 21:46 |
| Здравствуйте, помогите пожалуйста. Имеется база данных на ms sql compact 4.0, раньше работало все нормально , я периодически забирал базу методом ctrl+c ctrl+v с целью резервного хранения на другом компьютере. С недавних пор при попытке открыть базу данных через программу CompactView появляется сообщение "Невозможно открыть базу данных. Разрушительный сбой". У людей на компьютере (Windows XP) приложение и база данных работают стабильно, я же у себя ничего открыть не могу (Windows 7). При попытке запуска приложения .Net Framework(версии везде одинаковые 4.0) выдает следующее: "Необрабатываемое исключение в приложении .... Разрушительный сбой" Сведения: Подробная информация об использовании оперативной (JIT) отладки вместо данного диалогового окна содержится в конце этого сообщения. ************** Текст исключения ************** System.Data.SqlServerCe.SqlCeException (0x80004005): Разрушительный сбой в System.Data.SqlServerCe.SqlCeConnection.Open(Boolean silent) в System.Data.SqlServerCe.SqlCeConnection.Open() в System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) в System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior) в System.Data.Common.DbDataAdapter.Fill(DataTable dataTable) в KMPR.kmprDataSet1TableAdapters.staffTableAdapter.Fill(staffDataTable dataTable) в d:\KMPR программа С#\KMPR\kmprDataSet.Designer.cs:строка 12850 в KMPR.Authorization.Authorization_Load(Object sender, EventArgs e) в d:\KMPR программа С#\KMPR\Authorization.cs:строка 56 в System.Windows.Forms.Form.OnLoad(EventArgs e) в System.Windows.Forms.Form.OnCreateControl() в System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) в System.Windows.Forms.Control.CreateControl() в System.Windows.Forms.Control.WmShowWindow(Message& m) в System.Windows.Forms.Control.WndProc(Message& m) в System.Windows.Forms.ScrollableControl.WndProc(Message& m) в System.Windows.Forms.ContainerControl.WndProc(Message& m) в System.Windows.Forms.Form.WmShowWindow(Message& m) в System.Windows.Forms.Form.WndProc(Message& m) в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) Затем окно ошибки закрывается и открывается еще раз. Физически программа расположена не в d:\KMPR программа С#\KMPR\ , там лежит старый проект. Удаление данной папки не помогло.За последнее время на данной машине поднимался сервер IIS, его остановка не помогает. Подскажите у кого какие идеи. PS если заменить базу данных старыми бэкапами, то приложение запускается нормально. Базу копировал уже раз 5 точно. На компьютере без сервисов пока не проверял, устанавливаю виртуалку. |
| Автор: Akina 7.9.2016, 22:09 | ||
| Я не понимаю, зачем постить стек вызовов приложения, если проблема явно в структуре файла данных сервера... Visual Studio -> Server Explorer -> Shrink & Repair Либо
|
| Автор: chipik 8.9.2016, 00:10 |
| Akina, сделал как вы советовали. База восстановилась, но в ней удалились почти все данные. Как вы думаете, почему база не переносится с компьютера? Ведь она идет как поврежденная только когда я ее сбрасываю на флешку, у пользователей работает как работала. Заранее спасибо. Делал так: SqlCeEngine engine = new SqlCeEngine(@"Data Source=kmpr.sdf;Password=***;Persist Security Info=True"); engine.Repair(null, RepairOption.RecoverAllPossibleRows); |
| Автор: Akina 8.9.2016, 00:21 |
Ну тогда остаётся только экспорт из поломанной БД всех данных и заливка дампа в живую (старой версии или леченную, данные предварительно удалить). Она переносится. А вот приаттачиться не может из-за ошибок (скорее всего в метаданных). Либо в них внесены изменения, отражённые в системной БД (скажем, добавлен локальный пользователь), и не переносящиеся при таком копипасте. Попробуй в качестве эксперимента корректно остановить сервис, и только потом копировать файл данных. И присоединять так же, при остановленном сервисе. |
| Автор: chipik 8.9.2016, 10:21 |
| Akina, спасибо за советы! Оказалось что шалит флешка, скопировал на другую флешку и все заработало. |