Makale Özeti

Uygulamanızda kullandığınız veritabanını yine uygulamanızdan backup almak istermisiniz ?

Makale

Çoğu uygulama için veritabanının yedeklenmesi hayati önem taşır.Programı kullanan şirketin tüm müşteri bilgileri, mal stokları gibi bir çok bilginin bir veritabanında saklandığını farzedelim.Ve programı kullanan kişi kötü bir sürprize karşı veritabanını yedeklemek isteyecek fakat hayatında MS SQL görmemiş. Peki nasıl yapacak bu işi? İşte bu makalede bunu nasıl yapabileceğimizi basitçe anlatan bir program yapacağız.

 

Örnek : Aşağıdaki uygulamada kullanıcı istediği zaman database’in backup’ını alabilir ve aldığı backup’ı yeniden yükleyebilir.

 

Sub BackupDatabase(ByVal connString As String, ByVal dbName As String, ByVal backupFile As String)

 

        Dim cn As New SqlConnection(connString)

        Try

        Dim cmdBackup As New SqlCommand("BACKUP DATABASE [" & dbName & _

                "] TO DISK = " & backupFile & "", cn)

            cn.Open()

            cmdBackup.ExecuteNonQuery()

        Finally

            cn.Close()

        End Try

End Sub

 

Burada dikkati çeken nokta aynen select cümlesi kullanıyormuşuz gibi BACKUP DATABASE kullanmış olmamız. MSDN de backup database sözdizimi şu şekilde gösteriliyor:

 

BACKUP DATABASE { database_name | @database_name_var }
TO < backup_device > [ ,...n ]
[ WITH
    [ BLOCKSIZE = { blocksize | @blocksize_variable } ]
    [ [ , ] DESCRIPTION = { text | @text_variable } ]
    [ [ , ] DIFFERENTIAL ]
    [ [ , ] EXPIREDATE = { date | @date_var }
        | RETAINDAYS = { days | @days_var } ]
    [ [ , ] PASSWORD = { password | @password_variable } ]
    [ [ , ] FORMAT | NOFORMAT ]
    [ [ , ] { INIT | NOINIT } ]
    [ [ , ] MEDIADESCRIPTION = { text | @text_variable } ]
    [ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
    [ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
    [ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]
    [ [ , ] { NOSKIP | SKIP } ]
    [ [ , ] { NOREWIND | REWIND } ]
    [ [ , ] { NOUNLOAD | UNLOAD } ]
    [ [ , ] RESTART ]
    [ [ , ] STATS [ = percentage ] ]
]

Bir kaç özelliği inceleyelim ; 

 

BLOCKSIZE:

Byte cinsinden fiziksel block boyutunu ifade eder.Windows 2000 tabanlı işletim sistemlerinde , varsayılan boyut 64 Kbdir.(Bu boyutta zaten SQL Serverın desteklediği maksimum boyuttur.)

 

DESCRIPTION:

Backup için yaptığınız açıklamadır.Maksimum 255 karakter yazılabilir.

 

DIFFERENTIAL:

Bir önceki full backup ile aradaki farkı backup alır.Bu şekilde yapılan backuplar daha az yer kaplarlar.

 

EXPIREDATE:

Alınan Backupın son kullanma tarihini belirler.

 

NOSKIP:

Backup almadan önce daha önce alınmış olan backupın son kullanma tarihini denetler ve eğer backup alma işlemi geçerli ise backup alır.SKIP ise bu işlemi disable yapar.

 

REWIND:

SQL Server kaydı geri saracak ve serbest bırakacaktır. Eger NOREWIND veya REWIND seçenek olarak belirtilmemişse, REWIND seçeneği geçerli olacaktır.

 

PASSWORD:

Oluşturulacak olan backupa şifre konup konmayacağını belirler.

 

STATS [ = yuzde ] :

Belirlediğiz yüzde gerçekleştiğinde mesaj verir.Örneğin yüzdeyi 20 olarak belirlediysek her %20lik dilimde mesaj gösterir.Eğer yüzde kısmı boş bırakılırsa default olarak her %10luk dilimde mesaj gösterir.

 

 

 

Şimdi işlemizi tamamlayalım :

 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBackup.Click

        Try

            BackupDatabase("server=(local);trusted_connection=true", "test", "test.bak")

            lblsonuc.Text = "Backup Alındı!!!"

 

        Catch ex As Exception

            lblsonuc.Text = ex.InnerException.ToString

        End Try

End Sub

 

 

Ve veritabanımızın backupı alndı.Alınan backup C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP klasöründe. Bir sonraki makalemizde backup aldığımız veritabanını RESTORE DATABASE ile yüklemeyi işleyeceğiz.

Örnek kodu indirmek için tıklayın

 

İyi Çalışmalar