Программное копирование файла текущей базы данных
Материал из GedeminWiki
(Различия между версиями)
SYSDBA (обсуждение | вклад) |
SYSDBA (обсуждение | вклад) |
||
| (не показаны 2 промежуточные версии 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>