[ Valerij Zajcev @ 01.05.2010. 10:36 ] @
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?
[ mmix @ 01.05.2010. 12:39 ] @
A sto ne koristis backup facility SQLa? Ima i svoj scheduler i sve sto ti treba.
[ ravni @ 02.05.2010. 10:31 ] @
mozda ne koristi SQL?

mogao bi na primer na serverskom delu aplikacije da podignes thread koji bi radio
Code:
while (true)
{
bekap();
Thread.Sleep(3*60*60*1000);
}

[ Valerij Zajcev @ 04.05.2010. 11:52 ] @
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
            }
        }
[ Boris B. @ 04.05.2010. 21:16 ] @
SQL Server Express nema opciju ali svakako imas obican windows-ov Task Scheduler. Napravi na serveru BAT ili CMD sa sledecim sadrzajem:

Code:

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.