reklam

Manşet

Powershell ile SQL Server yönetimi

Yazar Unknown 7 Ekim 2011 Cuma 0 yorum
Powershell  uygulamasına SQL Server içerisinde bulunan SQL Server Management Objects  (SMO) class’ larını import ederek, Powershell komutları ile birden fazla SQL Server üzerinde aynı anda yönetimsel işlemleri sağlayabiliriz.. ( SMO’ lar, SQL Server Instance’ ını yönetmek için gerekli olan tüm namespace , class vs.. içermektedir. ) PowerShell, tüm sunucular üzerinde yaygın olarak uygulanan ve tekrarlanan görevlerin otomatikleştirilmesini sağlar. Örneğin, tüm SQL sunucular üzerinde ad-hoc query vs.. çalıştırılmak istenirse powershell kullanılabilir.

Birden fazla SQL Server bulunan kurumlarda, rutin task’ leri ve kontrolleri yapmak için Powershell oldukça kolay bir yöntemdir. Powershell kullanarak aynı işlemi birden çok sunucu üzerinde tek bir komut satırıyla çalıştırabilirsiniz.

Powershell ile SQL Server yönetimi  isimli makalede  SQL Server sunucuları üzerinde düzenli çalışan ve başarısız olan SQL Agent Job’ larını denetlemek için Powershell’ in nasıl kullanılabileceğine dair komut satırlarını inceleyeceğiz. Daha sonra kurum içerisinde bulunan tüm sql server sunucularına ait versiyon numarasını listeleyen  Powershell  uygulamasının komut satırlarını paylaşacağız. Böylece sql server versiyon numarası geri kalan tüm server’ ların listelesini kolaylıkla elde edebiliriz.

Örnek 1 :

Her sabah, SQL Server sunucularında başarısız olan SQL Agent  Job’ larını denetlemek için aşağıdaki komut satırları çalıştırılabilir,










1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22


<strong><span style="color: rgb(51, 153, 51);">

# Check for failed SQL jobs on multiple servers


# sunucuList.txt isimli dosya oluşturup işlem yapacağımız tüm server’ ların ismi dosya içerisine yazılmalıdır;


# SQL Server ile çalışmak için SQL Smo class’ları invoke edilir</span></strong>


[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | out-null

  Cls


<span style="color: rgb(51, 153, 51);"><strong># SunucuList.txt dosyası içindeki herbir server bilgisini almak için «foreach» döngüsü açılıp tüm sunuculara ait bilgiler «get-content» cmdlet kullanılarak alınıyor..</strong></span>


  foreach ($svr in get-content "C:\Temp\serverList.txt")

  {

     write-host "server name :  " $svr

     $srv=New-Object "Microsoft.SqlServer.Management.Smo.Server" "$svr"


<strong><span style="color: rgb(51, 153, 51);">     # başarısız olan, Failed eden job’lar alınıyor,</span></strong>


     $srv.jobserver.jobs | where-object {$_.lastrunoutcome -eq "Failed"   -and $_.isenabled -eq $TRUE} |

     format-table name,lastrunoutcome,lastrundate -autosize

  }




Örnek :

Birden çok sunucusu olan kurumlarda SQL Server versiyon bilgilerini tek tek denetlemek  zahmetlidir. Fakat, Powershell kullanarak bu işlem oldukça kolaylaştırılabilir. Örneğin,  şirket bünyesinde versiyon numarası güncel olmayan, sürümü geri kalmış bir SQL Server Instance olup olmadığını kontrol etmek ve belirlemek için aşağıdaki komut satırlarını çalıştırabiliriz :

Hiç yorum yok: