Arşiv

Posts Tagged ‘SQLCMD’

SQL Server Express Otomatik Backup Alma – BACKUP (Transact-SQL)

28 Mayıs 2011 1 yorum

Selamlar;

Bilindiği üzere SQL Serve Express Editionda SQL Agent bulunmuyor. Yani herhangi bir Scheduled Job oluşturamıyoruz.
Fakat belirli aralıklarla veritabanlarımızın otomatik yedeğini aldırma ihtiyacımız olabilir.

Ben bu işlem için 1 script hazırladım; Bu script server üzerindeki tüm veritabanlarının (sistem veritabanları da dahil) yedeğini alıp, verilen gün sayısından eski backup dosyalarını siliyor. Bu şekilde disk boyutunu da kontrol altında tutmuş oluyoruz. Yedekleme sonucunu da bir log dosyasına yazıyor.

Hazırladığım scripti “SQLCMD” komutları ile Windows Scheduled Tasks ile zamanlayacağız.

DECLARE @path varchar(100)
DECLARE @day int
DECLARE @date varchar(30)
DECLARE @cmd varchar(250)
DECLARE @DeleteDate datetime

---- PARAMETRE TANIMLAMALARI ----

SET @path = 'C:\Backup'  -- Backupların saklanacağı klasör yolu.
SET @day = 5             -- Verilen gün sayısından eski backupları siler.

---- PARAMETRE TANIMLAMALARI ----

SET @date = CONVERT(varchar(16),GETDATE(), 120)
print @date + ' Backup Log'
print ''
SELECT @date = REPLACE(@date,':','')
SELECT @date = REPLACE(@date,' ','')
SELECT @date = REPLACE(@date,'-','')

SET @cmd = 'IF DB_ID(''?'')<>2 BACKUP DATABASE [?] TO DISK = ''' + @path + '\?_backup_' + @date + '.bak'' WITH INIT'
EXEC sp_msforeachdb @cmd

SET @DeleteDate = DateAdd(day, -@day, GetDate())
EXECUTE master.sys.xp_delete_file 0, @path, N'bak', @DeleteDate, 0
GO

Buda SQLCMD komutumuz:

1 SQLCMD -S localhost -E -i backup.sql -o C:\SQLBackupOutput_%date%.log

SQLCMD komut satırından sql serverı yönetebileceğimiz bir tool.

Ben Windows 2003 Server üzerinde yapıyor olacağım bu işlemi. Diğer sistemlerde de mantık aynı.
Scheluled Task aracını açıyoruz. Ve yeni bir task ekleme sihirbazını açıyoruz.

Next dedikten sonra Browse diyoruz ve SQLCMD komutunu yazığımız .cmd dosyasını seçiyoruz.

Daha sonrasında backup periyodunu seçiyoruz, Ben günlük gece 01:00 olarak seçtim.
Bir sonraki ekranda bu scriptin hangi hesapla çalışacağı bilgisini giriyoruz. Eğer bu kullanıcı SQL Server üstünde yetkili değilse SQLCMD komutunda bir de SQL user bildirmek gerekir.
Komut satırına “SQLCMD /?” yazarsanız tüm parametrelerin açıklamasını görebilirsiniz.

Task oluştu. Şimdi test etmek için sağ tıklayıp “RUN” diyorum.

Görüldüğü gibi backuplar ve log dosyası geldi. Eğer belirttiğim gün sayısından daha eski dosyalar olsaydı o dosyalarda silinmiş olacaktı.

Buda Log Çıktısı:

01 2011-04-25 13:04 Backup Log
02
03 Processed 376 pages for database 'master', file 'master' on file 1.
04 Processed 2 pages for database 'master', file 'mastlog' on file 1.
05 BACKUP DATABASE successfully processed 378 pages in 0.390 seconds (7.929 MB/sec).
06 Processed 176 pages for database 'model', file 'modeldev' on file 1.
07 Processed 2 pages for database 'model', file 'modellog' on file 1.
08 BACKUP DATABASE successfully processed 178 pages in 0.278 seconds (5.230 MB/sec).
09 Processed 896 pages for database 'msdb', file 'MSDBData' on file 1.
10 Processed 5 pages for database 'msdb', file 'MSDBLog' on file 1.
11 BACKUP DATABASE successfully processed 901 pages in 1.152 seconds (6.407 MB/sec).
12 Processed 456 pages for database 'Northwind', file 'Northwind' on file 1.
13 Processed 1 pages for database 'Northwind', file 'Northwind_log' on file 1.
14 BACKUP DATABASE successfully processed 457 pages in 0.515 seconds (7.269 MB/sec).
15 Processed 20704 pages for database 'AdventureWorks', file 'AdventureWorks_Data' on file 1.
16 Processed 1 pages for database 'AdventureWorks', file 'AdventureWorks_Log' on file 1.
17 BACKUP DATABASE successfully processed 20705 pages in 12.125 seconds (13.988 MB/sec).
18 Processed 176 pages for database 'test', file 'test' on file 1.
19 Processed 1 pages for database 'test', file 'test_log' on file 1.
20 BACKUP DATABASE successfully processed 177 pages in 0.235 seconds (6.170 MB/sec).

Hazırladığım scripti buradan indirebilirsiniz;
backup.sql
SQLBackup.cmd

İyi çalışmalar.

Alıntıdır : http://ahmetrende.com/2011/04/25/sql-server-express-otomatik-backup-alma/