adityarao31 Ответов: 3

Как восстановить базу данных из файла .bak в Visual C++ ?


Я создал простое подключение к базе данных с помощью Visual C++ 2010 professional и SQL server 2008. Я хочу развернуть проект на другой машине. Я храню файл резервной копии базы данных в программе установки.Но как я должен восстановить его программно ?

В настоящее время я развертываюсь на компьютере, где уже установлены VC++2010 и SQL server 2008.
Кто-нибудь подскажет мне, как программно восстановить базу данных SQL из проекта VC++?

3 Ответов

Рейтинг:
2

Pablo Aliskevicius

Если вы можете выполнять команды SQL, то есть одна с именем 'RESTORE DATABASE'.

Надеюсь, это поможет,

Пабло.


adityarao31

Как выполнить эту команду из VC++ MFC-вот главный вопрос ?
Я нашел одну команду SQLExecute ,но не смог ее использовать

Pablo Aliskevicius

Есть три варианта:
1. Используйте ADO.
2. Используйте OLE DB.
3. Используйте ODBC.

В каждом случае вы создаете и открываете объект подключения: чтобы восстановить базу данных, вы должны подключиться к MASTER.
Затем вы строите строку с нужной командой.
Наконец, вы выполняете команду.

Поищите примеры в MSDN, там должно быть еще несколько валяющихся.

Надеюсь, это поможет,
Пабло.

adityarao31

Я хочу использовать метод ODBC .Я написал следующий код в InitInstance моего
Приложение на основе диалога ,но оно не работает. Не могли бы вы сказать мне, какой код я должен написать ?
BOOL CTestDBApp::InitInstance()
{
-----------~~~----------------
SQLHSTMT hs;
Функция sqlprepare(ГС,(SQLWCHAR*)("восстановление базы данных суда от D:\\Trial.bak диск = '' "файл" = 1"), значение sql_nts);
SQLExecute(hs);
----------~~~~---------
}

Pablo Aliskevicius

Прочтите это (сверху вниз):
http://www.easysoft.com/developer/languages/c/odbc_tutorial.html
Особенно обратите внимание на вещи, связанные с подключением.
Наилучшие пожелания,
Пабло.

adityarao31

Да это кажется очень полезным

Рейтинг:
2

Member 13870886

Я использовал следующее в качестве запроса на master.mdf для восстановления базы данных, которая хорошо работает и протестирована в VC++.

qryRestore.Format("RESTORE DATABASE %s FROM DISK = '%%s.bak' WITH  MOVE '%s' TO '%s%s.mdf', MOVE '%s_log' TO '%s%s_log.ldf'", sDest, backupDir, sSrc, sSrc, dataDir, sDest, sSrc, dataDir, sDest);
						pConnection->Execute(_bstr_t(qryRestore), &vRecordsAffected, adExecuteNoRecords|adCmdText)

Здесь sDest= новое имя БД
backupDir = путь к каталогу резервного копирования
sSrc = имя файла .bak
dataDir = путь к папке данных SQL.


CHill60

Решение 1, опубликованное более 5 лет назад, обсуждало использование базы данных RESTORE. Придерживайтесь ответов на новые вопросы, когда ОП все еще нуждается в помощи, и убедитесь, что вы не просто повторяете то, что уже сказал кто - то другой

Рейтинг:
1

Jas m

взгляните на эту статью

http://technico-да.qnownow.com/backup-and-restore-sql-server-database-programmatically-in-c/[^]

в разделе восстановление резервной копии раздела.

Надеюсь, это поможет :)

Jas


adityarao31

Но это друг C#, VC++ MFC-это неуправляемое приложение в VC++ 2010 Professional.
Не могли бы вы привести пример для этого?