Программное копирование файла текущей базы данных
Материал из GedeminWiki
Версия от 17:06, 10 января 2012; SYSDBA (обсуждение | вклад)
Приведенный ниже макрос создает копию текущей базы данных. Макрос должен выполняться на том же компьютере, где расположен файл базы данных. Копия получит расширение ".copy" и будет располагаться рядом с исходным файлом.
Option Explicit Sub gd_CopyDatabaseFile Dim R, FileSys, FileName gdcBaseManager.ExecSingleQueryResult _ "SELECT mon$remote_protocol, mon$attachment_name FROM mon$attachments " &_ "WHERE mon$attachment_id = CURRENT_CONNECTION", 0, R, nil If R(0, 0) = "XNET" Or R(0, 0) = "" Or IsEmpty(R(0, 0)) Then FileName = R(1, 0) Set FileSys = CreateObject("Scripting.FileSystemObject") If FileSys.FileExists(FileName) Then gdcBaseManager.ExecSingleQuery "ALTER DATABASE BEGIN BACKUP", nil On Error Resume Next FileSys.CopyFile FileName, FileName & ".copy", True On Error GoTo 0 gdcBaseManager.ExecSingleQuery "ALTER DATABASE END BACKUP", nil End If End If End Sub
Перед подключением к сделанной копии ее следует разблокировать командой:
nbackup [-U <user> -P <password>] -F <database>