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

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
 
(не показаны 4 промежуточные версии 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>
 +
 +
====См. также====
 +
 +
* [[Использование утилиты nbackup для копирования базы данных между серверами]]
  
 
[[Category:VBScript]]
 
[[Category:VBScript]]
 
[[Category:Школа системного администратора]]
 
[[Category:Школа системного администратора]]

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

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

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

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