Я пишу приложение на C #, которое будет вызывать isql.exe
с соответствующими аргументами.
Интерфейс, которому я должен соответствовать:
public void Backup(string serverName, string databaseName, string userName, string password, string backupDestinationPath);
public void Restore(string serverName, string databaseName, string userName, string password, string restoreSourcePath);
Я уже реализовал это дляMSFT SQL Server 2008. У них есть отличная документация, такая как: http://technet.microsoft.com/en-us/library/ms186865.aspx
Я придумал способы сделать это (для SQL Server):
BACKUP DATABASE MY_DB
TO DISK = 'C:\Temp\MY_DB.bak'
WITH INIT, SKIP, NOFORMAT, NOUNLOAD,
CHECKSUM, STOP_ON_ERROR,
NAME = 'MY_DB.bak',
DESCRIPTION = 'Backup of MY_DB.';
RESTORE DATABASE MY_DB
FROM DISK = 'C:\Temp\MY_DB.bak'
WITH REPLACE, RECOVERY;
И назвал это так(Синтаксис пакетного файла Windows):
sqlcmd -E -S %SERVERNAME% -U %USER% -P %PASSWORD% -d master -Q "%SQL_BACKUP_CMD%"
Мне не удалось найти много онлайн о том, как сделать это для SyBase.
РЕДАКТИРОВАТЬ:
Теперь я могу сделать это из командной строки.Сначала я создаю файл с именем syb_bak.sql, содержащий:
dump database mydb to "D:\Temp\mydb.bak"
go
exit
Затем я вызываю его в командной строке одним из двух способов:
isql.exe -S {serverAlias} -U {user} -P {password} -i syb_bak.sql
isql.exe -S {serverAlias} -U {user} -P {password} < syb_bak.sql
При желании я могу использовать -o
отметьте или перенаправьте вывод >
, чтобы получить вывод.
Все отлично работает, за исключением того, что, к моему удивлению, файл резервной копии сбрасывается на стороне сервера, а не на клиенте.