SQL Express Edition Backup Alert

SQL Express Edition  kısıtlı bir sürüm olduğu için  Job, mail gibi yan araçları kullanamıyoruz fakat  powershell ve Task Scheduler(Görev Zamanlayıcısı)  gibi  Windows ile gelen  araçlar  ile bunları yapmamız mümkün.SQL Express Edition sürümünde backup jobımızı oluşturmuştuk. SQL Express Edition Backup Job isminde ki makalemde bulabilirsiniz.

Bu makale de alınan backupları belli aralıklarla kontrol ederek en son ne zaman backup alındığını bize mail ile bildirmesi için gerekli ayarlamaları yapacağız.

İlk olarak backupları kontrol etmek için aşağıda ki procedure oluşturmamız gerekiyor.

USE [master]

GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[Backup_kontrol]

AS
BEGIN


SELECT sd.Name as DatabaseName,

COALESCE(Convert(varchar(12), MAX(bs.backup_finish_date), 101),'Daha Backup Alinmamis') as LastBackUpDate,

COALESCE(Convert(varchar(12), MAX(bs.user_name), 101),'NA') as UserName

FROM sys.sysdatabases sd

LEFT OUTER JOIN msdb.dbo.backupset bs ON bs.database_name = sd.name

GROUP BY sd.Name

ORDER BY sd.Name

    END


GO

Yukarıda ki scripti çalıştırdıktan sonra dbo.Backup_kontrol procedure’ü oluşmuş mu kontrol edelim.

 

Görüldüğü gibi Master veritabanının altında ki Programmability’nin altında Stored Procedures sekmesinin altında Dbo.Backup_kontrol procedure’nü gördükten sonra kullanıcı oluşturmamız gerekiyor.

Backup_kontrolUser Adında kullanıcı oluşturduk ve bu kullanıcıya User Mapping den sadece master veritabanın da public yetkisi veriyoruz sonradan oluşturduğumuz procedure üstünde execute yetkisi vereceğiz.Bu pencere de tamam dedikten sonra  oluşturduğumuz procedure’e gelip  sağ tuş yapıp Properties’i açıyor ve Permissions sekmesinden  kullanıcıya execute yetkisi veriyoruz.

Kullanıcıya execute yetkisi verdikten sonra aşağıda ki powershell scriptinde belirtilen yerleri kendinize uyarlamanız gerekiyor.

Bu işlem bittikten sonra procedure den çıkan sonucu yazdırmak için aşağıda ki gibi içi boş notepad oluşturuyoruz.

Backup.txt oluşturulduktan sonra aşağıda ki powershell scriptin de bulunan kırmızı ile işaretlenmiş yerleri kendimize göre düzenledikten sonra .ps1 uzantısında aynı yere kaydediyoruz.

 

$user = “Oluşturulan SQL Kullanıcı Adı”
$pwd = “oluşturduğumuz kullanıcının şifresi”
$database = “master”
$connectionString = “Server= bağlanılacak instance ip ve port  ;uid=$user; pwd=$pwd;Database=$database;Integrated Security=False;”
$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = $connectionString
$connection.Open()
$query = “ execute dbo.BACkup_kontrol ”
$command = $connection.CreateCommand()
$command.CommandText = $query
$result = $command.ExecuteReader()
$table = new-object “System.Data.DataTable”
$table.Load($result)
$table | Out-File C:\Backup\Backup.txt - #notepadi oluşturduğumuz path
Send-MailMessage -From "smtp hesabı" -To "Gönderilmesini istediğimiz mail hesabı"-Subject "Başlık" -Body "Konu. " -BodyAsHtml -Attachments "c'nin altında oluşturduğumuz dizin eğer başka bir yere oluşturduysanız orayı yazmalısınız c:\Backup\Backup.txt" -Priority High -dno onSuccess, onFailure -SmtpServer "smtp sunucusu"
$connection.Close()

Powershell uzantılı dosyamızı  belli aralıklarla  çalıştırabilmemiz için .bat uzantılı dosya hazırlamamız gerekiyor.Bunun için notepad’i açıyoruz ve aşağıda ki scripti yapıştırıp .bat uzantısında kaydediyoruz.

powershell.exe -file "D:\Backup\ExpresBackupKontrol.ps1"

Windows ile beraber gelen Görev Zamanlayıcısını açıyoruz ve Görev oluştur diyoruz .

Ad bölümüne  Görevimizin ismini yazıyoruz ve Kullanıcı oturum açmışsa da açmamışsa da çalıştır seçeneğini seçerek devam ediyoruz.

Tetikleyiciler kısmına geliyoruz ve ben Günlük 08:50 de gönderecek şekilde ayarlamaları yaptım siz farklı tarih ve saat  yapabilirsiniz.

Eylemler kısmında   sol alt köşe de bulunan Yeni butonuna tıklıyoruz ve .bat uzantısında oluşturduğumuz dosyayı seçip tamam diyerek  görev yöneticisinde ki işlemlerimizi bitirmiş oluyoruz.

Yaptığımız çalışmayı doğru yaptığımızı kontrol etmek için oluşturduğumuz görevin üstünde sağ tıklayarak,çalıştır diyoruz ve mail hesabımızı kontrol ediyoruz.

En son ne zaman backup alındığı artık mail olarak gelecektir.