Microsoft

SQL Server Express’te Otomatik Scheduled Backup Alma

Makalemizde size basit ama bana çok sorulan bir konudan bahsetmek istiyorum. Bildiğiniz gibi SQL Server’da otomatik backup alınabilmektedir. Örneğin her akşam saat 20.00’de backup alınsın diye bir job tanımlanabilir. Bu job’ı işleten servis ise SQL Server Agent’tır ve SQL Server’ın Express yani ücretsiz sürümünde SQL Server Agent’ı bulunmamaktadır.

Bugünkü makalemde SQL Server Express sürümünde Windows Scheduler servisini kullanarak nasıl otomatik backup alınacağını anlatıyor olacağım.

Giriş paragrafında da belirttiğim gibi Express sürümlerinde SQL Server Agent bulunmamaktadır. Dolayısıyla otomatik backup işlemini Windows’un kendi scheduler servisi ile yapacağız.

Yapacağımız işlem aslında basit. Backup alacak script i hazırlayıp bu scripti sqlcmd ile windows scheduler servisi vasıtasıyla istediğimiz zamanlar tetikleyeceğiz. Bu arada windows scheduler task SQL Server Agent gibi verilen taskları belirli periyotlarda çalıştırmaya yarar.

Ben bugünkü örneğimi Windows Server 2008 Standart ve SQL Server 2005 Express üzerinde gerçekleştireceğim. Diğer edition’larda ufak ekran farklılıkları olmakla birlikte işin ana mantığı aynıdır.

Şimdi adımlarımıza geçelim.

Backup almak istediğimiz DB için backup script i hazırlıyoruz.

BACKUP DATABASE [AdventureWorks] TO DISK = N’C:\AdventureWorksDailyBackup.bak’
WITH INIT
GO

Bu script i “E:\SQLBackups\DailyBackup.sql” olarak kaydediyoruz.

Windows scheduler task’ında bu dosyayı aşağıdaki komutlar eşliğinde çalıştıracağız. İlk komut DB Server’a windows authentication bağlanmakta, 2.komut ise belirli bir SQL Login ile bağlanmakta. Hangisi sizin için uygunsa onu kullanabilirsiniz. Ben ilkini kullanacağım.

sqlcmd S serveradi\instanceadi i “E:\SQLBackups\DailyBackup.sql”

sqlcmd S serveradi\instanceadi U BackupAdmin P sifre i “E:\SQLBackups\DailyBackup.sql”

Bu arada serveradi\instance adi kısmını kendi server bilgilerinize göre düzenleyiniz. Instance adı Express sürümlerde genelde SQLExpress olmaktadır. Tam olarak ne olduğuna SQL Server Configuration Manager’dan bakabilirsiniz.

Şimdi Task tanımlamalarına başlamak için Task Scheduler’ı açıyoruz.

image001

Yani bir task tanımlamak için Task Scheduler Library >> Create Task a basıyoruz.

image002

General kısmını aşağıdaki gibi ihtiyacımıza göre dolduruyoruz.

image003

Schedule kısmında hangi sıklıkla bu task’ın çalışacağını belirliyoruz. Bizim taskımız her gece 11 de çalışacak.

image004

Action kısmında New Action’a basarak işi yapacak işlemi tanımlıyoruz. Bu işlemimiz bir program çalıştıracak. Browse kısmında sqlcmd.exe’sini seçiyoruz. Bu exe genelde C:\Program Files\Microsoft SQL Server\90\Tools\binn klasöründe bulunmaktadır. Son olarakta Add arguments kısmına daha önce yazdığım komutlardan hangisi size uyuyorsa o komutun sqlcmd den sonraki kısmını yazıyoruz. Örneğin aşağıdaki gibi;

sqlcmd S serveradi\instanceadi i “E:\SQLBackups\DailyBackup.sql”

Ok’e basarak bu ekranı kapatıyoruz.

image005

Artık Scheduler’ımız hazır. Scheduler’a sağ tıklayarak manuel olarak tetikliyoruz.

image006

Task çalışmasını bitirip sonlandığında ilgili klasöre backup’ların alındığını göreceğiz.

Makalemizde yazımda ücretsiz SQL Server sürümü olan Express Edition’da otomatik backup işleminin Windows Scheduler ile nasıl gerçekleştirebileceği üzerinde durdum. SQL Server Agent içermeyen bu sürümde Windows Scheduler kullanarak bu ihtiyacınızı yukarıdaki adımlar eşliğinde sorunsuzca halledebilirsiniz.

Alıntı: Turgay Sahtiyan

0 0 votes
Makaleyi Oylamayı Unutmayın !

Tayfun DEĞER

Bu yazı blog üzerinde Tayfun DEĞER tarafından paylaşılmıştır. 2009 yılında açılan blog kısa zaman içerisinde büyük bir izleyici kitlesine sahip olmuştur. Tayfun DEĞER danışmanlık ve eğitimler vermektedir. vExpert 2013-2019, VCP4/5/6, VCP5-DT, VCP-Cloud ve MCSE sertifikalarına sahiptir.Twitter 'dan @tayfundeger veya RSS ile sitedeki değişiklikleri takip edebilirsiniz.

İlgili Makaleler

Subscribe
Bildir
guest

0 Yorum
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Başa dön tuşu
0
Görüşlerini belirtmek ister misin?x