MS SQL Express

SQL Server 2005 a vyšší ve verzi Express nedovolují pro údržbu databází využití SQL Server Agent. Úlohy pro údržbu databází je tedy nutno plánovat pomocí plánovače úloh systémy Windows a utility sqlcmd (odkaz míří na stránky společnosti Microsoft).

1) První kroky

  • Vytvořte adresář, do kterého umístíte níže uvedené soubory. V tomto článku použijeme adresář C:\Maintenance
  • Vytvořte v tomto adresáři soubor maintenance.sql
  • Vytvořte v tomto adresáři soubor maintenance.cmd

2) Vytvoření skriptu

V souboru maintenance.sql vyplňte následující řádky:

use master

Zajistí volbu správné databáze, nad kterou budou příkazy provedeny.

execute spav_dbbackup_all_dbs 'C:\SQLBackup', 10Budou zálohovány všechny uživatelské databáze do adresáře C:\SQLBackup s tím, že zálohy starší 10 dnů budou automaticky smazány.


Chcete-li zálohovat databáze pouze určených firem či databází, můžou řádky skriptu vypadat například takto:
execute spav_dbbackup2 1, 'C:\SQLBackup', 10
execute spav_dbbackup 'Firmy', 'C:\SQLBackup', 10
execute spav_dbbackup 'DZAK0002', 'C:\SQLBackup', 10
V tomto případě budou zálohovány pouze databáze Firmy, DZAK0002, a všechny databáze s názvem ????###1 (např. Data0001, Data5001 atd.).

execute spav_foreachuserdb @Command='DBCC CHECKDB'Bude provedena kontrola integrity všech uživatelských databází. V adresáři C:\Maintenance bude vytvořen soubor Integrita.log s informacemi o průběhu kontroly integrity.


→ Chcete-li provést kontrolu integrity pouze u databází Varia (databáze s názvem ????####), bude soubor integrita.sql vypadat takto:

execute spav_foreachvariodb @Command='DBCC CHECKDB'

execute spav_dbreindex_all_dbsBude provedena reindexace všech tabulek ve všech uživatelských databázích.


→ Chcete-li reindexovat databáze pouze určených firem či databází, může zápis vypadat takto:

execute spav_dbreindex2 1
execute spav_dbreindex 'Firmy'
execute spav_dbreindex 'DZAK0002'
V tomto případě bude provedena reindexace pouze u databází Firmy, DZAK0002 a u všech databází s názvem s názvem ????###1 (např. Data0001, Data5001 atd.).

execute spav_shrinklogs_all_dbsBude provedeno ořezání logu všech uživatelských databází SQL Serveru.

Celý soubor maintenance.sql může při ošetření všech uživatelských databází SQL Serveru vypadat takto:

use master
exec spav_dbreindex_all_dbs
exec spav_shrinklogs_all_dbs
exec spav_foreachuserdb @Command='DBCC CHECKDB'
exec spav_dbbackup_all_dbs 'C:\SQLBackup', 7
exec spav_updatestats_all_dbs

Poznámka

Procedury spav_dbbackup... může spouštět pouze člen role sysadmin. Je-li procedura používána na MS SQL 2005 a vyšším, je nutno povolit proceduru xp_cmdshell. Proceduru xp_cmdshell na MS SQL 2005 a vyšším povolíte pomocí následující sekvence příkazů:

EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE

3) Vytvoření spustitelného souboru pro plánovač úloh

V souboru maintenance.cmd vyplňte následující řádek:

sqlcmd -S "<SERVER>" -U "<LOGINSYSADMIN>" -P "<HESLOSYSADMIN>" -i "C:\Maintenance\maintenance.sql" -o "C:\Maintenance\maintenance.log"

V případě, že chcete použít integrované zabezpečení systému Windows, vynechte údaje (-U "<LOGINSYSADMIN>" -P "<HESLOSYSADMIN>" ).

Příklad spuštění s integrovaným zabezpečením:

sqlcmd -S "<SERVER>" -i "C:\Maintenance\zaloha.sql" -o "C:\Maintenance\zaloha.log"V tomto případě nezapomeňte, že uživatel systému Windows, pod jehož účtem budete plánovanou úlohu spouštět, musí být na SQL Serveru členem serverové role sysadmin!

Soubor maintenance.cmd může vypadat například takto:

sqlcmd -S "SQLSERVER\VARIO" -U "udrzba" -P "Udrzba123" -i "C:\Maintenance\maintenance.sql" -o "C:\Maintenance\maintenance.log"

4) Vytvoření naplánované úlohy

V plánovači úloh naplánujte novou úlohu s časem spuštění nejlépe vám vyhovujícím a jako příkaz použijte dávkový soubor C:\Maintenance\maintenance.cmd

 

Poznámka

Pro více informací o Plánovači úloh čtěte článek Scheduling tasks nebo Task Scheduler How To... na Technet.microsoft.com

 

Související dokument