SQL Server Express Otomatik Backup Alma

  1. cemmm
    4
    855
    5/14/2019 11:20:00 AM

    SQL Server Express sürümünde otomatik veritabanı yedeği nasıl alabilirim her gece , SQL Server Agent yok çünkü bu sürümde

    sql sql-server sql-server-2016 sql-server-2014 sql-server-2017 11 gün önce 128 Görüntüleme

( 3 ) Cevap

  1. koraydrk
    2
    1759
    5/17/2019 12:25:00 PM

    SQL Server Express sürümünde haliyle agent yok ve buda bizi ya task schedule ile sqlcmd üzerinden script çalıştırmaya zorlayacak yada ikinci yolda anlatacağım çok daha kısa bir yol ile , üçüncü parti bir yazılımla bu işi express sürümünde otomatik günlük backup alacağız

    1. Yol (Daha zor ve uzun yol)

    Önce sunucumuzda yada pc mizde buckup ın alınacağı veritabanlarını ve backup dosyasının kaydedileceği yeri ayarlayan scriptimizi yazıyoruz.

    Backup dosya adını dinamik yapıyorum ben hep , bu sayede DBAdi_20190514.bak gibi isimde backup dosyaları oluşuyor gunluk otomatik

    DECLARE @disk nvarchar(200)
    SET @disk=N'C:\Backup\DBAdi_'+CONVERT(VARCHAR(8), GETDATE(), 112) +'.bak'
    BACKUP DATABASE [DBAdi] 
    TO DISK =@disk
    WITH INIT
    GO
    

    Ardından bu scriptimizi bir yere .sql uzantılı bir dosya şeklinde kaydediyoruz ve Task Schedule işlemlerine geçiyoruz

    Task Scheduler'ı açıyoruz :

    sql-server-daily-backup-task-scheduler

    Ne kadar sürede , sıklıkla backup alacağız , onun süresini ayarlıyoruz , tavsiyem günlük almanız:

    task-scheduler-trigger

    Ardından schedule ın ne yapacağını ayarlıyoruz

    Biz sqlcmd.exe sini çalıştıracağız günlük. Her gün sqlcmd.exe si yukarda yazdığımız scripti çalıştıracak ve günlük backupımızı script de belirttiğimiz yere , belirttiğimiz veritabanının yedeğini alacak.

    Sqlcmd.exe genelde buralarda olur ;

    C:\Program Files\Microsoft SQL Server\110\Tools\Binn\
    

    yada

    C:\Program Files\Microsoft SQL Server\100\Tools\Binn\
    

    yada

    C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn
    

    buralardada bulamazsanız file explorer penceresinin arama kısmına SQLCMD.EXE yazsanız çıkacaktır yeri

    Argüman olarakda scriptimizin yolunu ve bu scripti çalıştıracak komutları giriyoruz , komutlar sqlcmd ye ait komutlar

    Windows authentication ;

    sqlcmd –S sunucuadi\instanceName –i “C:\SqlBackupScript.sql”
    

    Sql server authentication

    sqlcmd –S sunucuadi\instanceName  –U user–P password –i “C:\SqlBackupScript.sql”
    

    task-scheduler-add-action-windows-gorev-ekleme

    Bu kadar , tamam diyip sonlandırıyoruz işlemimizi , Task Schedule dan tanımladığımız göreve sağ tıklayıp Run diyerek test de edebiliriz , belirttiğimiz saat gelmeden önce

  2. koraydrk
    1
    1759
    5/17/2019 2:55:00 PM

    2. Yol - SQL Backup Master

    İkinci yol SQL Backup Master programı , hem ücretsiz hemde kullanımı çok kolay , aynı task schedule daki gibi zamanlayıcı ile otomatik günlük backuplar alabiliyorsun , üstelik aylık full , günlik fark yedekleri almak için bile ayarı var.

    Kulllanımı gayet basit ;

    Create new database backup >> Choose SQL Server >> Sql Server Bağlantısı yapılır yapılmaz DB ler geliyor.

    Yedeği alınacak db ler seçiliyor , sonra nereye yedek alınacağı Destinations alanına ekleniyor. Birde schedule eklendimi tamamdır. Belirtilen zamanlarda çalışıp backup alınıp birde alınan backupı zipliyor program.

    sql-gunluk-otomatik-backup-oto-daily-backup

    SQL Backup Master

    • askinglr34 bu yöntemde programa sql connection bilgilerini veriyorsunuz, ya oda programı yazan kişiye çaktırmadan gönderiyorsa bağlantı bilgilerini ?

    • Yorum Ekleyin

  3. askinglr34
    0
    2362
    5/24/2019 10:34:00 AM

    eğer sql server agent yoksa, ben @koraydrk ın birinci yöntemini öneririm, bence daha güvenli, microsoftun kendi yazılımları dışında bir yazılım kullanmak, çokda güvenli değil diye düşünüyorum, program arka tarafda ne yapıyor bilmiyoruz,

    ben birinci yöntemi .bat dosyası çalıştırarakda yapılabildiği yöntemi paylaşacağım

    1) Taskımızı oluşturmaya başlıyoruz

    sql-server-daily-backup-task-scheduler

    2) Zaman ayarlarını yapıyoruz , hergün saat 2 de alınsın backup

    task-scheduler-trigger

    3) Daha önceden hazırladığımız ve çalıştığını test ettiğimiz bir bat dosyası çalıştırıyoruz

    task-scheduler-program-calistir

    sql-backup

    .bat dosyası içeriği ve .sql dosyası içeriği

    BackupScript_Run.bat

    @@echo off
    del errors /f /s /q
    rd Errors
    md Errors
    FOR %%A IN (*.SQL) DO ( sqlcmd -S sqlserveradi -d veritabani -U kullanici -P sifre -i "%%A" -o "Errors\%%AError_DB1.txt" -I )
    

    SqlBackupScript.sql

    DECLARE @disk nvarchar(200)
    SET @disk=N'C:\Backup\veritabaniAdi_'+CONVERT(VARCHAR(8), GETDATE(), 112) +'.bak'
    BACKUP DATABASE [veritabaniAdi_] 
    TO DISK =@disk
    WITH INIT
    GO
    

Cevabınız