Search code examples
sqlcommand-linesybasedatabase-backupsdatabase-restore

How to backup/restore a Sybase 15 database to/from file using isql.exe (command line)?


I am writing a C# app that would call the isql.exe with appropriate arguments.

The interface that I need to conform to:

    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);

I have already implemented this for MSFT SQL Server 2008. They have great documentation, such as: http://technet.microsoft.com/en-us/library/ms186865.aspx

I came up with ways to do it (for 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;

And call it like so (Windows batch file syntax):

sqlcmd -E -S %SERVERNAME% -U %USER% -P %PASSWORD% -d master -Q "%SQL_BACKUP_CMD%"

I have not been able to find much online about how to do this for SyBase.

EDIT:

I can now do this from the command line. First I create a file named syb_bak.sql containing:

dump database mydb to "D:\Temp\mydb.bak"
go
exit

Then I call it on the command line in one of two ways:

isql.exe -S {serverAlias} -U {user} -P {password} -i syb_bak.sql
isql.exe -S {serverAlias} -U {user} -P {password} < syb_bak.sql

Optionally I can use the -o flag or an output redirect > to grab the output.

Everything works great, except that, to my surprise, the backup file is being dumped on the server side and not client.


Solution

  • Dump database command

    http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.commands/html/commands/commands54.htm

    f.e.

    dump database DB to "/dev/nrmt0" with init

    Restore database

    http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.commands/html/commands/commands64.htm

    f.e.

    load database DB from "/dev/nrmt0"