2

我正在编写一个isql.exe使用适当参数调用的 C# 应用程序。

我需要符合的接口:

    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标志或输出重定向>来获取输出。

一切都很好,除了令我惊讶的是,备份文件被转储到服务器端而不是客户端。

4

1 回答 1

4

转储数据库命令

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

使用 init 将数据库 DB 转储到“/dev/nrmt0”

恢复数据库

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

从“/dev/nrmt0”加载数据库 DB

于 2011-04-08T19:20:28.767 回答