SQL Server kurulumu diğer veri tabanlarının kurulumuna göre nispeten daha kolay bir kuruluma sahiptir. Ancak varsayılan özellik ve ayarlar ile bir kurulum yapılırsa performans ve güvenlik konularında olması gereken düzeyde çalışmayacaktır. Bu dokümanda, Microsoft’un en iyi pratiklerine göre SQL Server 2022 versiyonunun kurulumu ve kurulum sonrası yapılması gereken konfigürasyon ayarları anlatılacaktır. Developer versiyonu geliştirme amaçlı olarak ücretsiz olan ve enterprise versiyonun özelliklerini barındıran versiyondur. SQL Server enterprise versiyonu diğer versiyonlar arasındaki en kapsamlı versiyondur. Versiyonlar arasındaki farklılıklara bu dokümanda değinilmeyecektir.
SQL Server kurulacak sistemin I/O, depolama performansını test etmek için bazı araçlar kullanılabilmektedir (SQLIOsim, Diskspd).
Kurulum Öncesi Gereksinimler
- SQL Server kurulumu için , kullanılacak disklerin mümkünse fiziksel olarak ayrı fiziksel diskler (ve SSD) olması önerilir. Bu I/O izolasyonu ve performans açısından önemlidir. En iyi pratik olarak , aşağıdaki (10.madde) örnek dizin yapısını mümkünse ayrı fiziksel disklerde oluşturmak yerinde olacaktır. Fiziksel olarak ayrı disk kullanma imkanımız yoksa, sanallaştırılmış ayrı diskler kullanabiliriz. Sanallaştırılmış olarak ayrı diskler kullanma imkanımız da yoksa sistemdeki disklerden birini Sql Server’a ayırıp aşağıda 10.maddedeki klasör yapısını oluşturabiliriz. Ancak bu son seçenek fiziksel olarak ayrı diskler tayin etmek kadar güvenli ve performanslı olmayacaktır.
- SQL Server’ın kullanacağı diskler 64KB olarak biçimlendirilmelidir.
- Sistemde antivirüs varsa SQL Server’ın kullandığı diskler taramadan çıkartılmalıdır.
Aşağıda yeri geldikçe microsoft dökümanlarının bağlantılarını da paylaşacağım. SQL Server kurulumu için gerekli donanım ve yazılım gereksinimlerine şu yazıdan bakabilirsiniz. İlk kurulum ekranında aşağıdaki ekranla karşılaşıyoruz: Installation menüsünden en üstteki seçeneği seçiyoruz.
Adım adım kurulum işlemleri
İlk ekran: SQL Server kurulum dosyası (iso) açıldığında setup.exe dosyası çalıştırılır. Bu anlatımda 2022 versiyonu developer edition üzerinden ilerlenecektir. İlk kurulum ekranında, sol sütundaki installation menüsünden en üstteki seçenek seçilmelidir.
Lisans durumuna göre versiyon seçim ekranı: SQL Server lisansımız varsa seri numarası girilir. Evaluation versiyonu kısıtlı süreli (180 gün) deneme versiyonudur. Developer versiyonu, geliştiriciler için ücretsiz versiyon olup, en kapsamlı versiyon olan “enterprise” versiyonun özelliklerini içermektedir. Burada developer versiyonunu seçiyoruz.
Lisans koşulları ekranı: Bu ekranda, lisans koşulları kabul edilir.
Güncelleme ekranı: Güncelleme yapılmasını öneren bu ekranda aşağıdaki görselde işaretlenen kutu boş bırakılıp bir sonraki ekrana geçilmelidir. Kurulumdan sonra da güncelleme yapmak mümkündür. İnternete bağlı bir sunucuya kurulum yapılıyorsa, güncellemelerin kurulması bu kutu işaretlenerek de sağlanabilir.
Dikkat! İnternete bağlı olunmadığı durumlarda da güncellemelerin haricen indirilip, sunucuya aktarılıp kurulması çok önemlidir. Çünkü bu güncellemeler önemli güvenlik ve performans iyileştirmeleri içerebilmektedir.
Kurulum öncesi sistem kontrol ekranı: Bu ekranda Firewall konusunda bir uyarı mesajı alınabilir. Kuruluma engel olmayan bu uyarı SQL Server’ın kullandığı varsayılan port (1433), service broker portu (1434) ve pipeline portuna (445) firewall’da izin verilmesi gerektiğini belirtir. Next butonuna basılarak kuruluma devam edilir.
Azure extension ekranı
Microsoft’un bulut çözümü olan Azure’da çalışma yapmayacağımız için kutuyu boş bırakıp sonraki ekrana geçiyoruz. Eğer Azure kullanacaksak hesap bilgilerimizi giriyoruz.
Yeni kurulum ya da özellik ekleme ekranı: Bu ekran üzerinden yeni bir instance kurulumu yapılabileceği gibi, daha önce kurulmuş bir instance için yeni özellik eklemeleri de yapılabilir.. Bu ekranda yeni bir kurulum için üstteki seçenek seçilmelidir. Installed instances bölümünden sunucuda kurulu tüm instance bilgileri görülebilir. Daha önce SQL Server kurulmamış bir sunucuda kurulum yapıyorsak bu ekran gelmeyecektir.
Kurulacak özellikler ekranı: Bu ekranda kurulacak özelliklerin seçilmesi gerekmektedir. Kırmızı ile işaretli özellikler asgari özelliklerle kurulum yapmak için yeterlidir. Diğer özellikler ihtiyaç durumuna göre kurulan özelliklerdir. Diğer bazı özellikler aşağıda açıklanmıştır:
Database Engine services : Veritabanının temel bileşenidir. Veriyi depolayan, işleyen ve
güvenliğini sağlayan temel servistir. Kurulum için seçilmek zorundadır.
- Sql Server Replication :Veritabanı replikasyon işlemleri için gerekli servistir. Bir veritabanındaki bir nesneyi bir başka sunucudaki veritabanına replike etmek için gereklidir. Tekil sunucu kuruyorsanız ihtiyaç yoktur.
- Machine Learning Services and Language Extensions : Veri tabanını Python ve R dili ile sorgulama imkanı verir.
- Full Text and Semantic Extractions for Search :Büyük text veri içeren tablolarda arama işlemlerinde kullanılır. Full text index kullanılacaksa seçilmelidir.
- Data Quality Service: Veri düzeltme, standartlaştırma, tutarlılık kontrolü, tekilleştirme vb. gibi işlemler için kullanılır.
- Polybase Query Services for External Data : Client bağlantı aracı kurmadan Oracle, Teradata, MongoDB, Hadoop, Cosmos DB gibi veritabanlarından ve büyük veri platformlarından T-SQL kullanarak SQL server’ın sorgulanabilmesini sağlar.
- Analysis Services: iş zekası, veri analizi, raporlama uygulamaları için veri madenciliği yapmamıza yarayan bileşendir.
- Integration Services :İki Sql server veritabanının birbiriyle entegre olarak aktarımına olanak sağlar.
- Master Data Services : Kurumsal ana verinin yönetimi için kullanılan bileşendir.
Başka bir dizine kurulum yapılmak isteniyorsa, “Instance root directory” kısmından dizin seçilebilir. Kırmızı ile işaretlenen kutular seçilip bir sonraki adıma geçilir.
Instance konfigürasyonu ekranı: Bu ekranda instance için bir isim verilir. İsim verilmezse varsayılan olarak MSSQLSERVER ismi ile kurulum yapılacaktır.
Servis hesapları ve dil ayarları ekranı: Aşağıdaki ekranda, 1 numara ile işaretli bölüm servis hesaplarının ve şifrelerinin ayarlandığı bölümdür. Burada varsayılan olarak bazı hesap bilgileri gösterilmektedir. Varsayılan servis hesaplarıyla SQL server kurma imkanı olmasına rağmen, domain ortamına kurulum yapılıyorsa önerilen kurulum şekli, tüm servis hesapları için ayrı domain hesapları oluşturulmasıdır. Local bir sunucuya kurulum yapılacaksa varsayılan hesaplarla da kuruluma devam edebiliriz. SQL Server browser servisi için kullanıcı atamaya gerek yoktur.
Özellikle domain ortamında kurulum yaparken, servis hesaplarının
– yalnızca kurulum için kullanılacak olması,
– oturum açılmayan yeni domain hesabı olması,
– “password never expire” seçeneği ile oluşturulması,
– sunucu üzerinde kesinlikle administrator olmaması önemlidir.
Microsoft servis hesaplarının işletim sistemi üzerinde mümkün olan en az hakka sahip kullanıcılar olmasını önermektedir.
Dikkat! Varsayılan servis hesaplarıyla kurulum yapılırsa, always on kurulumunda , cluster yapılandırılırken, Import/export işlemlerinde veya veri taşımada sorunlar yaşanabilir. SQL Server Browser servisi için kullanıcı gerekli değildir. Ek olarak, domain ortamında user ve password yönetimini kolaylaştıran GMSA seçeneği vardır ancak bu dokümanda GMSA konusuna değinilmeyecektir.
Eğer domain ortamında bir kurulum yapılmıyorsa, tekil bir sunucuda veya kişisel bilgisayarda vs. kurulum yapılıyorsa, varsayılan hesaplarla değişiklik yapmadan devam edilebilir. Bu kurulumda varsayılan hesaplarla devam ediyoruz ve başlama tipi kısmında, SQL Agent’ın başlama tipi otomatik olarak işaretliyoruz.
2 numara ile işaretlenen özellik, performansı ciddi oranda etkileyen bir özellik olduğu için kutu işaretlenmelidir. Bu özellik ile SQL Server, veritabanı büyümelerinde işletim sisteminden aldığı disk bölümünü istediği formatta alır ve yeniden biçimlendirmeye ihtiyaç duymaz.
3 numara ile işaretlenen bölümde instance’ın dil ayarını mutlaka doğru olarak seçmek gerekir. 4 numara ile işaretlenen bölümde SQL Server Agent’ın başlama tipini otomatik olarak seçiyoruz.
Doğrulama (authentication), kurulum dizinleri, tempDB ayarları:
Bu ekranda, authentication mode olarak Mixed mode (1) seçilir. SQL Server’ın en yetkili kullanıcısı sa için bir şifre girilir (2). İşletim sistemine oturum açan mevcut kullanıcısı veri tabanı yöneticisi olarak eklenir (Add Current User).
Kurulum dizinlerinde en iyi uygulama, fiziksel olarak bütün bu dizinlerin ayrı disklerde yer almasıdır. Aşağıdaki gibi bir dizin yapısı oluşturulabilir:
- C:\İşletim sistemi
- D:\Data root directory: Sistem veritabanları ve kurulum dizinidir ve işletim sistemi ile aynı diskte olmaması önerilir.
- E:\DATA : Database dosyalarının (mdf, ndf) tutulacağı disk
- F:\LOG : Log dosyalarının tutulacağı disk
- G:\TEMPDATA : Tempdb data dosyalarının tutulacağı disk
- H:\TEMPLOG : Tempdb log dosyalarının tutulacağı disk
- I:\BACKUP : Backup dosyalarımızın tutulacağı disk
Ancak tekil bir sunucuda kurulum yapılıyorsa bütün bu dizinleri ayrı fiziksel disklerde oluşturma imkânı olmadığında, aşağıdaki ekranda olduğu gibi ayrı klasörlerde konumlandırılması yönetim açısından faydalı olacaktır.
TempDB’nin konfigürasyonu yapılırken dosya sayısı, sunucudaki işlemci çekirdeği (core) sayısına göre, 8’den az core sayısı için core sayısı kadar, 8’den fazla core sayısı için ise en az 8 olarak ayarlanır. 8’den daha fazla core içeren sunucular için tempdb performansı takip edilerek dosya sayısı artırılabilir.
Tempdb data file için initial size 1024MB ve auto growth boyutu 512MB verilebilir. Sunucu üzerindeki iş yüküne göre değişebilen rakamlardır ancak başlangıç için bu şekilde verilebilir. Tempdblog için de 512MB/256MB şeklinde verilebilir.
Memory ayarlaması kurulum sonrasında, SSMS üzerinden yapılacaktır. MaxDOP ve filestream ayarlarına gerek duyulacak bir veritabanı kurulmadığı sürece herhangi bir şey değiştirme ihtiyacı şu aşamada bulunmamaktadır.
Son ekran / konfigürasyon dosyası ayarlama ekranı: Kurulumla ilgili yapılan tüm ayarlamalar, kurulum sonrasında SQL Server’ın kurulduğu dizin altında bir konfigürasyon dosyasına (configuration.ini) yazılır. Bu dosya daha sonra aynı özelliklerde bir kurulum yapılmak istendiğinde kullanılarak, pratik bir kurulum yapılmasına olanak verir. Ayrıca, seçilen ayarları gözden geçirmek için de kullanılabilir. Bu ekranda Install butonuna basılarak kurulum başlatılır.
Kurulum sonrası ayarlamalar 1 – Veritabanını kurduktan sonra SQL Server Management Studio’yu Microsoft’un şu sayfasından indirip kurmamız gerekiyor. 2- Sunucu power ayarlarından “high performance” seçeneği seçilir. Buradaki diğer seçenekler dizüstü bilgisayarlar için etkili seçeneklerdir. Sunucularda ihtiyaç olmayan güç tasarrufu seçenekleridir. Bu tarz güç tasarrufu seçenekleri BIOS yazılımlarında da bulunabilmekte ve açık bırakıldığında sunucu performansını kötü etkileyebilmektedir.
3- Local Policy ayarları yapılır.SQL server’ın arka planında çalışan bazı işlemlerle ilgili kullanıcıların ilgili yetkilere atanması gerekir. Başlat-> secpol.msc açılır. Lokalde yapılırken bu yol takip edilir ama domain ortamında sunuculara merkezi olarak bu politikalar basılabilir. Bu ekranda “Local Policies –> User Rights Assignment” açılır.
Act as part of the operating system : İşletim sistemi gibi çalışma rolü veriyoruz. Bunun için SQL Agent hesabı eklenmeli. Adjust memory quotas for a process : İşlemci , ram gibi kaynakları sorgu bazında, proses bazında atayabilmek için agent kullanılabilir. Agent’a bu yetkiyi kullandırabilmek için buraya eklenmesi gerekir. Bypass traverse checking : SQL Agent eklenir.Sorgularda yardımcı olacak bir izin. Windows kullanıcısına klasör dizininde engellemeye takılmadan gezinme imkanı verir. Lock Pages In Memory : Buna da servis hesabını eklememiz gerekiyor. SQL server bu ayar ile Windows’un memory yönetimini aşıp memory de kendine ait alanları tutmaya devam eder. İşletim sisteminin memory’de kendine ait yerleri boşaltmasının önüne geçer. Memory azaldığında işletim sistemi hafızayı boşaltmaya başlar çünkü. Log on as a batch job : Job’lar içerisinde batch dosyası , komut çalıştırabilmek için gereklidir. SQL Agent hesabı eklenir. Log on as a service : Servis hesabının da Agent hesabının da burada ekli olması gerekir. Servis hesabının değiştirilmesi pek önerilmez ama değiştirilirse buraya yeni servis hesabının eklenmesi gerekir. Perform volume maintenance tasks : Buraya mutlaka SQL server servis hesabı eklenmiş olmalıdır. Replace a process level token: Windows kullanıcısına farklı bir kullanıcıyla işlem yapma imkanı verir. SQL Agent hesabı “run as” şeklinde başka prosesler çalıştırabilir. Buradaki tüm değişiklikler yapıldıktan sonra veritabanı sunucusunu restart ediyoruz. Buradaki policy ayarlarına dair detaylı bilgiye şu sayfadan erişebilirsiniz.
4 – SQL server configuration manager’ı açıyoruz.
Burada istersek kullanıcıyı değiştirebiliriz. Daha önce kurulumda karşımıza çıkan filestream buradan da açılabilir. Burada startup parametrelerine baktığımızda master sistem veritabanının yerini görüyoruz. İstersek buradan path değiştirebiliriz. Ayrıca buradan bağlantı şeklimizi değiştirebiliyoruz. Örneğin single user bağlanma, açılış da bazı trace flag leri çalıştırma vb. gibi. Bu ekranda yapılan değişiklikler servisin restart edilmesini gerektirir.
5- Yine configuration manager da aşağıdaki menüye giriyoruz.
SQL Server’ın kullandığı varsayılan 1433 portunu istersek buradan değiştirebiliriz. Burada eğer 1433 portunu değiştirmeye karar verirsek tekrar eden tüm bloklardan değiştirmemiz gerekir. SQL server’ın varsayılan portunun 1433 olduğu bilindiğinden güvenlik açısından önemli bir seçenektir portu değiştirmek. Yerel bağlantılarda güvenlik nedeniyle SQL Server 1433 portunu tamamıyla kapatmaz. Port değiştirmek uzak bağlantılarda mümkündür. 6- SQL Server kurulduktan sonra upgrade yapmak istersek https://sqlserverbuilds.blogspot.com/ adresinden son çıkan service pack ve cumulative update leri indirip kurabiliriz 7- Kurulum esnasında da memory ayarları gelmişti ancak, kurulum sonrasına ertelemiştik. İstenirse o aşamada da yapılabilir. SSMS’da sunucunun properties ekranında memory sekmesine geliyoruz. SQL server için atanan maximum hafıza boyutu önerilen olarak sunucunun %80 idir. Böyle bir sınırlama getirmemizin nedeni SQL Server’ın sunucudaki tüm hafızayı kullanmaya meylidir. Minimum server memory alanı ise ayar yaptığımız instance için “Minimum server memory” alanına girdiğimiz boyut kadar hafıza rezerve etmemizi sağlar. Aynı sunucuda birden fazla instance olduğunda, ya da başka çalışan uygulamalar sözkonusu olduğunda tercih edilen bir ayardır.
8- Processors sekmesinde de kullanılacak core lar seçilebilir. Ya da boş bırakılarak tüm işlemci corelarının kullanılacağı şekilde bırakılabilir. Varsayılan budur.
9 – Security tabında authentication mode’u değiştirebilir, başarılı girişleri, başarısız giriş denemelerini ya da her ikisini loglara yazmasını seçebiliriz. 10 – Connections tabında maximum bağlantı sayısı sınırlandırabiliriz. Sıfır değeri sınırlandırmayı kaldırır. 11 – Kurulum tamamlandıktan sonra sunucu üzerinde firewall aktif ise, SQL Server’ın kullandığı portlara izin verilmesi, antivirüs var ise veritabanı dosyalarını (mdf, ndf, ldf, bak, trn,log, txt) taramasının engellenmesi performans açısından önemlidir. 12- SQL Server kurulumu tamamlandığında kurulum dizinine ConfigurationFile.ini isimli bir dosya atar. Bu dosya kurulumda seçtiğiniz konfigürasyonu içerir. Başka bir sunucuya aynı konfigürasyonla kurulum yapmak istediğinizde yalnızca bu dosyayı göstererek aynı özelliklerde bir sunucu kurabilirsiniz.