Imam .NET aplikaciju gde treba na neki odredjeni period automatski da mi se izvrsi backup baze. Ne znam sada koje je najoptimalnije resenje da pozivam taj kod. Recimo da aplikacija treba da se bekapuje na svakih 3 sata, logicno mi deluje da koristim neki timer, ali me zanima da li ima jos neko resenje za ovaj problem?
Periodicno backup-ovanje baze
Zaključano
Zakačeno
A sto ne koristis backup facility SQLa? Ima i svoj scheduler i sve sto ti treba.
Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
mozda ne koristi SQL?
mogao bi na primer na serverskom delu aplikacije da podignes thread koji bi radio
mogao bi na primer na serverskom delu aplikacije da podignes thread koji bi radio
Code:
while (true)
{
bekap();
Thread.Sleep(3*60*60*1000);
}
while (true)
{
bekap();
Thread.Sleep(3*60*60*1000);
}
Koristim donji kod za backup. SQL express nema opciju da na odredjeno vreme vrsi backup. Tako da cu najverovatnije ovo dole pozivati na drugom thread-u :(
Code:
public void BackupDatabase(String databaseName, String userName,
String password, String serverName, String destinationPath)
{
try
{
Backup sqlBackup = new Backup();
sqlBackup.Action = BackupActionType.Database;
sqlBackup.BackupSetDescription = "ArchiveDataBase:" +
DateTime.Now.ToShortDateString();
sqlBackup.BackupSetName = "Archive";
sqlBackup.Database = databaseName;
BackupDeviceItem deviceItem = new BackupDeviceItem(destinationPath, DeviceType.File);
ServerConnection connection = new ServerConnection(serverName, userName, password);
Server sqlServer = new Server(connection);
Database db = sqlServer.Databases[databaseName];
sqlBackup.Initialize = true;
sqlBackup.Checksum = true;
sqlBackup.ContinueAfterError = true;
sqlBackup.Devices.Add(deviceItem);
sqlBackup.Incremental = false;
sqlBackup.ExpirationDate = DateTime.Now.AddDays(3);
sqlBackup.LogTruncation = BackupTruncateLogType.Truncate;
sqlBackup.FormatMedia = false;
sqlBackup.SqlBackup(sqlServer);
}
catch (Exception)
{
// to do
}
}
public void BackupDatabase(String databaseName, String userName,
String password, String serverName, String destinationPath)
{
try
{
Backup sqlBackup = new Backup();
sqlBackup.Action = BackupActionType.Database;
sqlBackup.BackupSetDescription = "ArchiveDataBase:" +
DateTime.Now.ToShortDateString();
sqlBackup.BackupSetName = "Archive";
sqlBackup.Database = databaseName;
BackupDeviceItem deviceItem = new BackupDeviceItem(destinationPath, DeviceType.File);
ServerConnection connection = new ServerConnection(serverName, userName, password);
Server sqlServer = new Server(connection);
Database db = sqlServer.Databases[databaseName];
sqlBackup.Initialize = true;
sqlBackup.Checksum = true;
sqlBackup.ContinueAfterError = true;
sqlBackup.Devices.Add(deviceItem);
sqlBackup.Incremental = false;
sqlBackup.ExpirationDate = DateTime.Now.AddDays(3);
sqlBackup.LogTruncation = BackupTruncateLogType.Truncate;
sqlBackup.FormatMedia = false;
sqlBackup.SqlBackup(sqlServer);
}
catch (Exception)
{
// to do
}
}
SQL Server Express nema opciju ali svakako imas obican windows-ov Task Scheduler. Napravi na serveru BAT ili CMD sa sledecim sadrzajem:
...onda sa windowsovim Task Scheduler-om napravi job koji ce da se pokrece po zeljenom rasporedu i to je to. Ja sam tako resavao backup pa cak i replikaciju na Express verzijama.
Code:
sqlcmd.exe -U username -P password -S server -Q "BACKUP DATABASE....."
sqlcmd.exe -U username -P password -S server -Q "BACKUP DATABASE....."
...onda sa windowsovim Task Scheduler-om napravi job koji ce da se pokrece po zeljenom rasporedu i to je to. Ja sam tako resavao backup pa cak i replikaciju na Express verzijama.
Potpis
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
impersonation.