Een geplande back-up uitvoeren op een SQL Express-server

0000001766     -      26-09-2015

Wij bezorgen u hierbij de nodige programma's om een geplande back-up te realiseren op een SQL Express-server. De SQL-programma's van de Express-versies laten immers standaard niet toe om taken uit te voeren die op een gegeven moment geactiveerd moeten worden.

Ons programma dat werd ontwikkeld in C#, heeft als naam ExecSql. Het gebruik ervan moet gecombineerd worden met het Windows-hulpprogramma voor geplande taken (Toebehoren / Systeemtools). Wij raden aan om dit alles lokaal te installeren op de SQL-server.

Voor de installatie volstaat het als volgt te werk te gaan:

  • een nieuwe directory creëren (los van Mercator): bijvoorbeeld: C:\Program Files\ExecSql;
  • de inhoud van de bijgevoegde zip erin plaatsen;
  • het bestand ExecSql.ini aanpassen (cf. infra);
  • het SQL-script in ExecSql.sql aanpassen: u moet hier met name het adrespad naar de back-updirectory aanpassen. De opdracht die de lijst met de databanken voor opslag terugstuurt, kan ook worden gewijzigd. Wenst u bijvoorbeeld één enkele databank te back-uppen, dan hoeft u enkel de "where"-clausule te vervangen door WHERE name ='MercatorDossier';
  • de lokale back-updirectory creëren zoals vermeld in het script;
  • een nieuwe geplande taak creëren via het Windows-toebehoren die op het vastgestelde uur het uitvoeringsprogramma ExecSql.exe lanceert.

Het ini-bestand bevat deze opties, die aangepast kunnen worden:

  • ConnectString: string voor de verbinding met de SQL-server in SqlClient-formaat. De verbinding moet standaard worden uitgevoerd op de DB Master.
    • Voorbeeld met behulp van de Windows-beveiliging: Server=127.0.0.1\SQLEXPRESS;DataBase=Master;Integrated Security=SSPI
    • Voorbeeld met behulp van de SQL-beveiliging: Server=127.0.0.1\SQLEXPRESS;DataBase=Master;Uid=yourUserId;Pwd=yourPassword
  • MailTo: doele-mailadres voor de verzending van fout- of bevestigingsmeldingen, blanco als de mailverzending niet gewenst is;
  • MailFrom: verzende-mailadres voor de verzending van fout- of bevestigingsmeldingen, blanco als de mailverzending niet gewenst is;
  • SmtpHost: SMTP-server, blanco als de mailverzending niet gewenst is;
  • SmtpPort: poort voor de SMTP-server, standaard 25;
  • SendMailIfOk: yes/no. Om te bepalen of er bij een succesvolle procedure een mail moet worden verzonden, of enkel in geval van fouten.

In het bijgevoegde voorbeeld maakt de SQL-verbindingsstring gebruik van de geïntegreerde Windows-beveiliging. Daarom moet u er in de geplande Windows-taken goed op letten dat u de inlogcode en het wachtwoord van de beheerder vermeldt in de eigenschap "Uitvoeren als".

Het SQL-script voert standaard een back-up uit van alle andere databanken dan master, model, msdb en tempdb.

Bij de creatie van het back-upbestand wordt de datum toegevoegd aan de naam van de databank om een onderscheid te kunnen behouden tussen de bestanden per dag.

Van bij de eerste uitvoering creëert het programma automatisch het bestand ExecSql.log, dat de log omvat van de fouten en de bevestigingen. Dit bestand kan op elk ogenblik verwijderd worden.

Gelijk welk SQL-script kan worden uitgevoerd met dit programma. Het gebruik ervan beperkt zich dus niet tot het uitvoeren van back-ups (bijvoorbeeld: comprimeren van de DB, herindexering ...).

Opgelet: het SQL-script wordt gerealiseerd onder de volledige verantwoordelijkheid van de persoon die het installeert. In geval van SQL-commando's die structureel correct zijn, maar een deel van de gegevens vernietigen, kan het hier beschreven programma geen rollback uitvoeren van het uitgevoerde script. De eventuele schade is dus niet te herstellen.


Voorstel: wenst men dat er dagelijks slechts één BAK-bestand wordt aangemaakt en overschreven, dan moet men het SQL-script gewoon als volgt aanpassen:

  • niet langer de datum van de dag vermelden in de variabele @filename: SET @fileName = @path + @name + '.BAK';
  • de clausule WITH INIT toevoegen aan het back-upcommando: BACKUP DATABASE @name TO DISK = @fileName WITH INIT


Te laden : 0000001766.zip (77 Kb - 15-10-2009)