Программное копирование файла текущей базы данных
Материал из GedeminWiki
Приведенный ниже макрос создает дубликат текущей базы данных. Макрос должен выполняться на том же компьютере, где находится файл базы данных. Копия получит расширение ".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>