Bu makalede , SMO ( SQL Server Management Object )  kullanarak veritabanı özelliklerini almak için Windows PowerShell‘in nasıl kullanılacağı vurgulanmaktadır. Oldukça yaygın sözdizimi kullanarak veritabanı özelliklerini kontrol etmenin ne kadar kolay olduğuna dikkat edin

SQL Server DBA’ya başlarken karşılaştığım zorluklardan biri, bir veritabanının son yedekleme tarihini kontrol etmekti. Bunu yapmanın bir yolu, MSDB veritabanındaki hangi tabloların yedekleme geçmişinin kayıtlarını içerdiğini bulmaktır. Burada gerçekten zor olan, tablolara ve bunların MSDB‘nin sahip olmadığı ilgili ilişkilerine bakmak zorunda kalacağınız gerçeğidir. SQL Server Books Online’da ne söyleyeceğine güvenmelisiniz. Ayrıca, MSDB veritabanı yalnızca yedekleri olan veritabanları için kayıtları içerecektir. Ya olmayanlar?

Aşağıdaki script ile SQL Server Management Studio üzerinden sunucu üzerinde alınmış tüm yedekleri kontrol edebilirsiniz.

SELECT
T1.Name AS DatabaseName ,
COALESCE ( CONVERT ( VARCHAR ( 12 ), MAX ( T2.backup_finish_date ), 101 ), ‘Not Yet Taken’ ) ASLastBackUpTaken
FROM sys.sysdatabases T1 LEFT OUTER JOIN msdb.dbo.backupset T2
ON T2.database_name = T1.name
GROUP BY T1.Name
ORDER BY T1.Name

Powershell kullanarak ise aşağıdaki kod bloğunu kullanarak yedekleriniz kontrol edebilirsiniz.

$instance=”SQL_SERVER_INSTANCE_NAME“;
[System.Reflection.Assembly]::LoadWithPartialName(‘Microsoft.SqlServer.SMO’)| out-null
$s = new-object (‘Microsoft.SqlServer.Management.Smo.Server’) $instance
$dbs = $s.Databases
$dbs | select Name,LastBackupDate, LastLogBackupDate | format-table -autosize

Burada dikkat edilmesi gereken tek şey son iki satırdır – veritabanı nesnesinin bir örneğini oluşturan ve birkaç veritabanı nesnesi özelliğini görüntüleyen ve biçimlendiren satır. İlk birkaç satır, SMO kullanarak SQL Server’a erişecek herhangi bir PowerShell betiği için aynı olacaktır.