Программное копирование файла текущей базы данных
Материал из GedeminWiki
(Различия между версиями)
SYSDBA (обсуждение | вклад) |
SYSDBA (обсуждение | вклад) |
||
| Строка 28: | Строка 28: | ||
nbackup [-U <user> -P <password>] -F <database> | nbackup [-U <user> -P <password>] -F <database> | ||
| + | |||
| + | Примечание: макрос не будет работать, если подключение к базе данных осуществляется через алиас. | ||
[[Category:VBScript]] | [[Category:VBScript]] | ||
[[Category:Школа системного администратора]] | [[Category:Школа системного администратора]] | ||
Версия 17:12, 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>
Примечание: макрос не будет работать, если подключение к базе данных осуществляется через алиас.