Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
Пробующий
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,104
1

SQL Server Compact пересоздать базу данных

07.10.2010, 03:39. Просмотров 4056. Ответов 1
Метки нет (Все метки)

Есть приложение Win Forms .NET использующее базу данных на MS SQL Server Compact 3.5. Язык написания приложения - C#. В ходе работы этого приложения нужно создавать базу данных, сохранять копию БД на HDD, удалять текущую БД, и заново создавать новую БД.
Копию я делаю так
C#
1
2
3
4
5
6
7
8
9
10
11
12
 // исходная база данных
            string sourceDB = "oldBD.sdf";
            // сжатая база данных
            string destDB = "newdb.sdf";
            SqlCeEngine engine = new SqlCeEngine(@"Data Source = " + sourceDB);
            try
            {
                engine.Compact(@"Data Source = " + destDB);
                engine.Dispose();
            }
            catch { }
            finally { engine.Dispose(); }
, но как написать код удаления текущей БД, создания новой не знаю. Еще нужно уметь восстановить БД из .sdf файла, хранящегося на диске (backup).

Разобрался. Как сказано тут
Чтобы создать резервную копию базы данных, закройте все подключения к ней и скопируйте файл SDF.
Чтобы восстановить базу данных, скопируйте файл SDF обратно в его обычное рабочее расположение. Операция будет корректной, даже если база данных настроена для репликации.
Чтобы удалить базу данных, удалите файл базы данных SDF.
От себя добавлю, что код
C#
1
2
SqlCeEngine engine = new SqlCeEngine(@"Data Source = newdb.sdf");
            engine.CreateDatabase();
не создает БД, так как newdb.sdf уже существует. Но код
C#
1
2
SqlCeEngine engine = new SqlCeEngine(@"Data Source = newdb2.sdf");
            engine.CreateDatabase();
создаст новую базу данных. Создать копию старой БД, можно не только копированием файла, а и кодом, который я привел первым. Тогда БД еще немного сожмется. Еще я в своих целях часто юзаю "DELETE FROM <Имя Таблицы>" \ "DROP TABLE <Имя Таблицы>", для удаления таблиц. А затем заново их наполняю.
Может кому пригодится: здесь описан пример создания таблиц для sql Server Compact. Аналогично можно выполнить запрос удаления. Команды "DROP DATABASE" в Compact SQL нет. Поэтому прийдется удалять файл БД.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.10.2010, 03:39
Ответы с готовыми решениями:

Как в VS 2010 создать базу данных SQL Server Compact Edition 4.0
В списке есть только версия 3.5, но у меня установлен SQL Server Compact Edition 4-ой версии точно.

Как подключить к проекту локальную базу данных SQL Server Compact 4.0
Добрый день всем Ребята подскажите как подключить к проэкту Локальную базу данных SQL Server...

Базу SQL Server Compact Edition 4.0 нельзя выбрать в качестве источника данных в проекте
Установлен Visual Studio Ultimate 2010 SP1, SQL Server Compact Edition 4.0 и Visual Studio 2010...

Не могу создать базу данных SQL Compact
Открываю добавить новый элемент. И ничего нету! Что за ерунда? Все перерыл в интернете, ни у...

1
0 / 0 / 0
Регистрация: 28.05.2014
Сообщений: 3
01.11.2016, 13:55 2
Упала база.
У меня нет визуал студии.
Можешь сделать ЕХЕ, который восстановит любую базу по имени файла?
Имя в качестве параметра передавать.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2016, 13:55

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Экспорт данных в БД MS SQL Server Compact Edition
Здравствуйте, у меня такая проблема. Мне необходимо создать приложение которое использует...

Как вообще редактировать базы данных SQL Server Compact Framework 4.0
Стояла 2012 студия. Там я мог создать SQL Server Compact Framework 4.0 базу данных, подключиться к...

Microsoft SQL Server Compact Edition в SQL Server Management Studio Express
Не могу понять как настроить SQL Server Management Studio Expres чтоб открывать и создавать бд sql...

SQL Server Compact Framework. Как получить из базы данных последнюю добавленную запись в таблицу
Так не работает. Вообще исключение появляется, что не знает SQL такой функции internal...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.