Mit der Methode CreateBackupToFile() können Backups einer Datenbank mittels SMO gemacht werden. Dabei können Full, Differential und ein Transactionlog Backup gemacht werden.
/// <summary>
/// Erstellt ein Backup einer Datenbank
/// </summary>
/// <param name="serverName">Server, auf welchem die Datenbank liegt</param>
/// <param name="databaseName">Die zu sichernde Datenbank</param>
/// <param name="backupFileName">Pfad der Sicherung</param>
/// <param name="useTrustedConnection">Windows Authentication</param>
/// <param name="login">Benutzername, mit Backup - Rechten</param>
/// <param name="password">Passwort</param>
/// <param name="differential">Ob es ein Differential Backup werden sollte</param>
/// <param name="init">Ob das Backupfile überschrieben werden soll</param>
/// <param name="backupType">Backup Typ (Files, Datenbank , Log)</param>
public void CreateBackupToFile(
string serverName,
string databaseName,
string backupFileName,
bool useTrustedConnection,
string login,
string password,
bool differential,
bool init,
BackupActionType backupType)
{
// Verbindungsinformationen definieren
ServerConnection serverConnection = new ServerConnection();
serverConnection.ServerInstance = serverName;
if (useTrustedConnection)
{
serverConnection.LoginSecure = true;
}
else
{
serverConnection.LoginSecure = false;
serverConnection.Login = login;
serverConnection.Password = password;
}
// Verbindung aufbauen
Server server = new Server(serverConnection);
try
{
server.ConnectionContext.Connect();
// Backup in die angegebene Datei erstellen
Backup backup = new Backup();
backup.Action = backupType;
backup.Incremental = differential;
backup.Initialize = init;
backup.Database = databaseName;
if (this.PercentComplete != null)
backup.PercentComplete += this.PercentComplete;
backup.Devices.Add(new BackupDeviceItem(
backupFileName, DeviceType.File));
backup.SqlBackup(server);
}
finally
{
try
{
// Verbindung zum SQL-Server abbauen
server.ConnectionContext.Disconnect();
}
catch { }
}
}
Kommentare zum Snippet