Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL Server使用C执行备份#_C#_Sql Server 2008_Backup - Fatal编程技术网

C# SQL Server使用C执行备份#

C# SQL Server使用C执行备份#,c#,sql-server-2008,backup,C#,Sql Server 2008,Backup,我研究了通过SMO和C#创建数据库备份的可能性。 这项任务非常简单,代码也非常简单。我只有一个问题:如何检查备份是否真的创建了 方法不返回任何参数,我甚至不知道它是否抛出任何异常。(我只知道它是阻塞的,因为还有SqlBackupAsync方法) 我将非常感谢您的帮助。您可以而且很有可能做到您要求的事情 但是,使用SMO自己进行备份并不困难,但困难的部分是管理备份和恢复 很难把所有的代码放在这里,但它不适合。所以我会尽我所能把你需要的线 SqlBackup.SqlBackup不返回任何值,它是一个

我研究了通过SMO和C#创建数据库备份的可能性。 这项任务非常简单,代码也非常简单。我只有一个问题:如何检查备份是否真的创建了

方法不返回任何参数,我甚至不知道它是否抛出任何异常。(我只知道它是阻塞的,因为还有SqlBackupAsync方法)


我将非常感谢您的帮助。

您可以而且很有可能做到您要求的事情

但是,使用SMO自己进行备份并不困难,但困难的部分是管理备份和恢复

很难把所有的代码放在这里,但它不适合。所以我会尽我所能把你需要的线

SqlBackup.SqlBackup不返回任何值,它是一个void函数。 但它需要一个参数“Server”,请尝试以下代码:

Server srvSql;

//Connect to Server using your authentication method and load the databases in srvSql
// THEN

Backup bkpDatabase = new Backup();
bkpDatabase.Action = BackupActionType.Database;
bkpDatabase.Incremental = true; // will take an incemental backup
bkpDatabase.Incremental = false; // will take a Full backup 
bkpDatabase.Database = "your DB name";
BackupDeviceItem bDevice = new BackupDeviceItem("Backup.bak", DeviceType.File);
bkpDatabase.Devices.Add(bDevice );

bkpDatabase.PercentCompleteNotification = 1;// this for progress
bkpDatabase.SqlBackup(srvSql);
bkpDatabase.Devices.Clear();

我已经使用Reflector.NET调查了这个问题(我认为这是合法的,因为RedGate是Ms Gold认证的合作伙伴,Reflector.NET打开了.NET库)。我发现该方法抛出两种类型的异常:

FailedOperationException-在大多数情况下,其他异常被“翻译”(我认为翻译意味着创建新的FailedOperationException并将InnerException设置为实际抛出的异常)

不支持VersionException-在一种情况下,当日志截断设置为TruncateOnly且服务器主版本大于或等于10时(哪个是sql server 2008?)


这部分解决了我的问题,因为我不能100%确定如果出现问题,这些异常是否会被抛出。

我自己从来没有使用过它,但最好通过浏览文档来猜测,您可以附加一个事件处理程序,以查看它是否返回错误代码。但我不是100%确定在非异步情况下会调用它,而且一定有更好的方法!我想他想知道工作是否失败了。你怎么能测试呢?我已经有了你提供的代码:)问题是我想100%确保备份操作成功,这对我想做的事情至关重要。你能在整个事件中检查一下吗?