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

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
 
(не показана 1 промежуточная версия 1 участника)
Строка 1: Строка 1:
Приведенный ниже макрос создает дубликат текущей базы данных. Макрос должен выполняться на том же компьютере, где находится файл базы данных. Копия получит расширение ".copy" и будет располагаться рядом с исходным файлом.
+
Приведенный ниже [[макрос]] создает дубликат текущей базы данных. Макрос должен выполняться на том же компьютере, где находится файл базы данных. Копия получит расширение ".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>
  
 
====См. также====
 
====См. также====

Текущая версия на 18:29, 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>

[править] См. также

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

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