Программное копирование файла текущей базы данных

Материал из 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>

См. также

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты