Программное копирование файла текущей базы данных
Материал из GedeminWiki
(Различия между версиями)
SYSDBA (обсуждение | вклад) (Новая страница: «Приведенный ниже макрос создает копию файла текущей базы данных в случае использования в…») |
SYSDBA (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
| − | Приведенный ниже макрос создает копию | + | Приведенный ниже макрос создает копию текущей базы данных. Макрос должен выполняться на том же компьютере, где расположен файл базы данных. Копия получит расширение ".copy" и будет располагаться рядом с исходным файлом. |
<syntaxhighlight lang="vbnet"> | <syntaxhighlight lang="vbnet"> | ||
| Строка 25: | Строка 25: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | Перед подключением к копии | + | Перед подключением к сделанной копии ее следует разблокировать командой: |
nbackup [-U <user> -P <password>] -F <database> | nbackup [-U <user> -P <password>] -F <database> | ||
Версия 17:06, 10 января 2012
Приведенный ниже макрос создает копию текущей базы данных. Макрос должен выполняться на том же компьютере, где расположен файл базы данных. Копия получит расширение ".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>