Как в FIREBIRD сделать бэкап базы
Интересует следующий вопрос.
Можна ли средствами транзакт sql сделать бэкап базы?
Или например написав длл для udf вызвать функцию для создания бэкапа?
Простейший способ сделать бекап/рестор - это использовать встроеную утилиту gbak.exe.
Если очень хочется писать dll - можно из него вызвать сервисный API, который виполнит то же что и gbak. Для визова такого API надо: присоединится к сервис менеджеру (функция isc_service_attach()), запустить нашу задачу (isc_service_start()) и отсоединится (isc_service_detach()). Информацию о том как это сделать можно найти в interbase api guide в разделе Working with services.
А еще проще можно копировать файлы базы данных (*.gdb) в ЗИП
Цитата: Andreika
А еще проще можно копировать файлы базы данных (*.gdb) в ЗИП
Вообще-то так делать можно, но операции backup/restore в firebird'е имеют еще и смысл профилактики базы и сборки мусора. Кроме того сам файл бэкапа получится меньше. Его можно сделать транспортабельным (для переноса на другую версию). А также, бэкап, с помощью gbak или сервисных АРІ, можно выполнять на работающей базе. По этому, простое копирование не совсем (или совсем не) заменяет создание бекапа.
ЗЫ: Если уж придется копировать (или, чего хуже) заменять файл базы, сервер БД крайне рекомендуется остановить. Он вполне может в момент копирования производить какую-нить сервисную операцию, а также, если отключена опция ForcedWrite, действия осуществленные ранее могут быть не записаны на диск (ОС производит кеширование записи на диск).