Merhabalar,

Powershell’in gücünü kullanıp açık kaynak olarak geliştirilen DBaTools modülü ile SQL Server yönetimini anlatan içerikler hazırlıyorum, bu doğrultuda en temel olan SQL Server kurulumunu da Powershell kullanarak gerçekleştirelim.

Kurulum aşamasında ben SQL Server 2019 Developer edition kullanacağım için internetten iso dosyasını indirmem gerekiyor. İndirme işlemine geçmeden önce indireceğim yeri belirlemem gerekli, tüm işlemlerim için yönetici olarak bir powershell komut satırını çalıştırıyorum ve C dizini içerisine geliyorum. ( Projenin tüm dosyalarını GitHub adresimde bulabilirsiniz!)

Resim-1

C dizini içerisinde mkdir ile SQLServerDownload isimli klasörü oluşturuyorum.

Resim-2

SQLServerDownload klasörünü oluşturduktan sonra SQL Server 2019 ISO dosyasını powershell kullanarak oluşturduğumuz klasör içerisine aşağıdaki kod parçaları ile indiriyorum.

$folder = “C:\SQLServerDownload”
$url= https://download.microsoft.com/download/D/0/C/D0CCEE78-05BE-4A5E-AE9C-2FDE69F6600D/SQLServerVnextCTP2-x64-ENU.iso
$req = [System.Net.HttpWebRequest]::Create($url)
$req.Method = “HEAD”
$response = $req.GetResponse()
$fUri = $response.ResponseUri
$filename = [System.IO.Path]::GetFileName($fUri.LocalPath);
$response.Close()
$target = join-path $folder $filename
Invoke-WebRequest -Uri $url -OutFile $target

Resim-3

Resimde görüldüğü gibi ISO dosyasını indirmeye başladık. İndirme işlemi tamamlandıktan sonra yapmamız gereken ISO dosyasını açmamız gerekir. Bu işlemi gerçekleştirmek için aşağıdaki kod parçasını kullanıyoruz.

$ImagePath = ‘C:\SQLServerDownload\SQLServerVnextCTP2-x64-ENU.iso’
New-Item -Path C:\SQLServer -ItemType Directory
Copy-Item -Path (Join-Path -Path (Get-PSDrive -Name ((Mount-DiskImage -ImagePath $ImagePath -PassThru) | Get-Volume).DriveLetter).Root -ChildPath ‘*’) -Destination C:\SQLServer\ -Recurse
Dismount-DiskImage -ImagePath $ImagePath

Resim-4

Kod parçasında belirttiğimiz C:\SQLServer dosya yolunu kontrol edip, gerçekleştirdiğimiz işlemi kontrol edelim.

Resim-5

Yukarıdaki resimde görüldüğü gibi SQL Server indirme ve klasöre çıkartma işlemlerini başarılı bir şekilde tamamladık. Şimdi sırada powershell 4.0 ile gelen dsc yani yapılandırma yöneticisi ile nuget ve sqlserverdsc kurulumlarını gerçekleştirmeliyiz. Bunların kurulumları için aşağıdaki komutları çalıştırmalıyız.

Nuget için;

Get-PackageProvider -Name NuGet –ForceBootstrap

Resim-6

SqlServerDsc için;

Install-Module -Name SqlServerDsc -Force

Resim-7

Sırada SQL Server Kurulumu için hazırladığım konfigürasyon dosyasını çalıştırmaya geldim. Eğer ki aşağıdaki kodların içerisinde gördüğünüz SQLSetup kısımının detaylarını incelemek isterseniz sqlserverdsc nin yardım sayfasından faydalanabilirsiniz.

Configuration SQLServerConfiguration
{
Import-DscResource -ModuleName PSDesiredStateConfiguration
Import-DscResource -ModuleName SqlServerDsc
node localhost
{
WindowsFeature ‘NetFramework45’ {
Name   = ‘NET-Framework-45-Core’
Ensure = ‘Present’
}
SqlSetup ‘InstallDefaultInstance’
{
InstanceName        = ‘MSSQLSERVER’
Features            = ‘SQLENGINE’
SourcePath          = ‘C:\SQLServer’
SQLSysAdminAccounts = @(‘Administrators’)
DependsOn           = ‘[WindowsFeature]NetFramework45’
}
}
}
SQLServerConfiguration

Yukarıdaki kod bloğunu bir powershell dosyası olarak C:\ dizini altına kayıt edelim.

Resim-8

SQLServerConfiguration isiminde kayıt ettiğimiz powershell dosyasını yönetici olarak açtığımız powershell komut satırında çalıştıralım.

Resim-9

Sorgu çalıştıktan sonra C:\ dizini altında SQLServerConfiguration isimli bir klasör oluşturacak, o klasörün içerisinde ise localhost.mof isimli bir dosya oluşacaktır. Artı kurulum için yapılandırma dosyamız da hazır olduğuna göre artık aşağıdaki komut ile kurulumu başlatabiliriz.

Resim-10

Bir süre bekledikten sonra işlem tamamlanacaktır. İşlemin başarılı olup olmadığını ise Get-Service *SQL* komutu ile kontrol edebiliriz.

Resim-11

Gördüğünüz gibi powershell ile sql server kurulumunu başarılı bir şekilde gerçekleştirdik ve servis şuan çalışmaktadır.

Bol otomasyonlu, bol powershelli ve SQL’li günler dilerim!