Giriş ve Ön Gereksinimler
Merhabalar, Techaptic kanalına hoş geldiniz. Bugün Microsoft SQL Server 2025 kurulumunu ve bu yapının kurumsal standartlarda nasıl yapılandırılması gerektiğini inceleyeceğiz. Bu çalışmamızı doğrudan bir domain ortamında gerçekleştireceğiz. Bu yüzden sadece standart kurulum adımlarıyla yetinmeyip; servis hesaplarının yönetiminden disk ve bellek optimizasyonlarına, güvenlik tarafında SA hesabının sıkılaştırılmasından autogrowth ayarlarının yapılandırılmasına kadar kritik SQL Server en iyi uygulama (best practice) adımlarını da uygulayacağız. Amacımız, hem performanslı hem de üretim (production) ortamına uygun, güvenli bir veri tabanı altyapısı oluşturmak. Hazırsanız başlayalım.
Kuruluma geçmeden önce ön gereksinimlere bakalım. İlk sayfada donanım ve yazılım gereksinimleri yer alıyor. Sol tarafta donanım gereksinimlerini görüyorsunuz. CPU için minimum gereksinim 1.4 GHz x64 iken, önerilen değer 2.0 GHz ve 4 vCPU veya üzeridir. RAM tarafında 1 GB minimum gereksinim olsa da, bir üretim ortamında en az 16 GB RAM ile başlamak daha doğru bir tercih olacaktır. Disk tarafında ise minimum 6 GB disk alanına ihtiyaç vardır.
Ancak önerilen yapı olarak, SQL verilerini ayrıştırmak ve performansı artırmak için farklı diskler kullanacağız. C diskinde işletim sistemi ve SQL Server kurulum dosyaları yer alırken, D diskinde data dosyalarını tutacağız. L diskinde log dosyalarını, T diskinde TempDB dosyalarını ve B diskinde de yedekleme dosyalarını konumlandıracağız. Ayrıca şunu da belirtmek istiyorum: Önerilenler bölümünde belirtilen donanım değerleri kesin ve değişmez değerler değildir. SQL Server’ın kaynak ihtiyacı; veri tabanı boyutu, eş zamanlı kullanıcı sayısı, sorgu yoğunluğu ve uygulama türü gibi birçok etkene göre değişkenlik gösterebilir. Bu nedenle buradaki değerleri en azından bir başlangıç noktası olarak düşünebilirsiniz.
Sağ tarafta ise yazılım gereksinimleri yer alıyor. İşletim sistemi olarak Windows 10 ve üzeri ya da Windows Server 2019 ve üzeri işletim sistemlerine kurulum yapılabiliyor. Ancak bir üretim ortamında, Windows istemci ailesinden ziyade mümkün olan en güncel ve desteklenen Windows Server işletim sistemi üzerine kurulum yapılması daha doğru bir yaklaşım olacaktır. Ayrıca sunucu üzerinde .NET Framework 4.7.2 veya üzeri bir sürümün kurulu olması gerekmektedir. Bununla birlikte, kurulum sonrasında SQL Server’ı yönetmek için SQL Server Management Studio (SSMS) kuracağız. Bu araca da ihtiyacımız olacak. Son olarak SQL Server 2025 kurulum medyasını da indirmemiz gerekiyor.
Doğru Sürüm Seçimi ve Lisanslama
SQL Server’ın farklı sürüm seçenekleri bulunuyor. Üretim ortamlarında genellikle Standard veya Enterprise Edition tercih edilir. Ayrıca SQL Server Express gibi ücretsiz, ancak kaynak ve özellik limitleri olan bir sürüm de bulunmaktadır. Test ve geliştirme ortamları için düşünüyorsanız, Enterprise özelliklerini deneyimleyebileceğiniz Enterprise Developer Edition kullanılabilir. Bunun yanında Standard Developer Edition da vardır. Aslında bu iki sürüm, Standard ve Enterprise Edition özelliklerini test ve geliştirme amacıyla deneyimlemek için kullanılabilen sürümlerdir. Ancak üretim ortamları için lisanslanmış sürümler değildir.
Bunun dışında 180 günlük Evaluation dediğimiz bir sürüm de vardır. Bu da test amacıyla kullanılabilir. Bu nedenle sürüm seçimi yapılırken sadece kurulum ihtiyacına göre değil; lisanslama modeli, kaynak limitleri, yüksek erişilebilirlik (High Availability) ihtiyacı ve kullanılacak SQL Server özellikleri gibi birçok kriter göz önünde bulundurularak ilgili sürümü seçmekte fayda vardır. Deneme ve Developer sürümlerini indirmek için Microsoft’un SQL Server Download sayfasını kullanabilirsiniz. Eğer üretim ortamı için kurulum yapacaksanız, kurulum medyasını kurumunuzun sahip olduğu Volume Licensing portalı üzerinden veya Microsoft M365 Admin portalı üzerinden de indirebilirsiniz. Her iki sayfanın linkini de açıklamalar bölümünde belirteceğim. Oradan erişebilirsiniz.
Ağ ve Güvenlik Ön Gereksinimleri
Bir sonraki sayfada network ve diğer ön gereksinimleri görüyoruz. SQL Server Default Instance için en yaygın bağlantı portu TCP 1433’tür. Ancak bu portun kullanılabilmesi için SQL Server tarafında TCP/IP protokolünün aktif olması gerekir. Aynı zamanda ağ tarafında da gerekli erişim izinlerinin açık olması gerekir. Named Instance kullanıyorsanız durum biraz daha farklıdır. Named Instance’lar çoğu zaman dinamik port kullanır. Bu durumda istemcilerin doğru portu bulabilmesi için sunucuda SQL Server Browser servisine ihtiyaç duyulabilir. SQL Server Browser servisi UDP 1434 üzerinden çalışır. Ancak genellikle daha güvenli ve yönetilebilir bir yapı için Named Instance’a sabit bir TCP portu tanımlamak daha mantıklı olur. Böylelikle ilgili port üzerinden erişimler kontrollü bir şekilde sadece belirli istemciler için açılabilir.
Bir diğer ön gereksinim ise zorunlu olmasa da internet erişimidir. Sonuçta SQL Server’ı kurarken, gerek kümülatif güncellemeleri yapabilmek için gerekse SQL Server Management Studio kurulum dosyasını ya da diğer gerekli bileşenleri indirebilmek için internet erişimi yararlı olacaktır. Ayrıca SQL Server’ı standalone olarak da kurabilirsiniz. Ancak kurumsal ortamlarda sunucunun Active Directory domain ortamına dahil edilmesi; erişim yönetimi, grup bazlı yetkilendirme ve servis hesaplarının merkezi yönetimi açısından daha doğru bir yaklaşım olacaktır. Bununla birlikte SQL Server’ın doğrudan Domain Controller üzerine kurulması, güvenlik ve operasyonel yönetim açısından kesinlikle önerilmez. Bu yüzden SQL Server’ı ayrı bir member server olarak kurmak daha sağlıklı bir mimari tasarım olacaktır.
Son olarak servis hesapları da önemlidir. En iyi uygulama olarak SQL servislerini yüksek yetkili kullanıcılarla veya ayrıcalıklı hesaplarla çalıştırmamamız gerekir. Mümkünse gMSA, yani Group Managed Service Account, Managed Service Account veya Virtual Account kullanılabilir. Bunların hiçbiri uygun değilse, her SQL servisi için düşük yetkili ayrı domain hesaplarını tercih edebiliriz. Ben bu örnekte düşük yetkili domain hesapları kullanacağım ve kurulumu bu şekilde yapacağız.
Disk Hazırlığı ve Optimizasyon
Şimdi sunucumuza geçelim ve ayarları yapmaya başlayalım. Videomuzu hızlandırmak için önceden sunucumuza bir isim verdik, sabit bir IP adresi tanımladık ve sunucuyu Active Directory ortamımıza dahil ettik. Ek olarak SQL Server Database Engine ve SQL Server Agent servisleri için iki ayrı düşük yetkili Active Directory servis hesabı tanımladık. Bunu Active Directory tarafında da görebilirsiniz. Bir hesabın Windows servisi olarak çalışabilmesi için “Log on as a service” hakkına sahip olması gerekir. Biz SQL kurulum ekranında bu servis hesaplarını girdiğimizde, kurulum işlemi gerekli yerel izinleri ve “Log on as a service” hakkını bizim kurulum yetkilerimizi kullanarak otomatik olarak yapılandıracaktır. Yani burada hiçbir özel yetkiye sahip olmayan bir hesabı kullansak bile, kurulum işlemi bizim yerimize gerekli izinleri verecektir. Bu yüzden bu hesaplar için ek bir işlem yapmamıza gerek bulunmamaktadır.
Şimdi disklerimizi formatlayalım ve kuruluma hazır hale getirelim. Sunucumuza geçelim, bu ekranları kapatalım ve Start üzerine sağ tıklayarak Computer Management alanına girelim. Disk Management alanında ek olarak dört tane disk tanımlamıştık. Bunları initialize etmek için GPT ayarının seçili olduğundan emin olup OK diyelim. Biz burada C diskiyle beraber bütün diskleri NTFS olarak kullanacağız. C diski zaten formatlanmış durumda. Ancak diğer diskleri formatlarken varsayılan allocation unit size yerine 64 KB allocation unit size ile formatlayacağız. Bu, SQL Server dünyasında yaygın olarak kullanılan bir standarttır. Burada sihirli bir performans artışı beklemiyoruz. Asıl amaç, SQL Server’ın büyük veri dosyalarıyla daha tutarlı çalışmasını sağlamaktır. Bunu büyük veri dosyalarıyla daha dengeli ve tutarlı çalışmak için yaptığımız bir ayar olarak düşünebilirsiniz.
Burada iki tane 40 GB diskimiz, iki tane de 20 GB diskimiz var. 40 GB disklerden bir tanesini hemen D olarak tanımlayalım. Next diyoruz. D diskinde SQL’in data dosyalarını tutacağız. Burada allocation unit size değerini Default’tan 64K’ya çekelim ve buna uygun bir isim verelim. Bu şekilde bir diski tamamlamış olduk. Şimdi diğer diske geçelim. Bu da yedekleme diskimiz olacak. Yedekler için bir disk ayırsak da, mümkünse bunların farklı bir sunucuya veya ayrı bir depolama cihazına alınması daha doğru bir yaklaşım olacaktır. Biz örneğimizde yedekleri de ayrı bir yerde tuttuğumuzu göstermek için ayrı bir disk tanımladık. Ancak üretim ortamında yedekleri farklı bir sunucuya veya güvenli bir depolama alanına almak en doğru çözüm olacaktır. Şimdi burada allocation unit size değerini yine 64K’ya çekip volume label olarak Backup diyelim ve diski formatlayalım.
Şimdi iki tane 20 GB diskimiz var. Bu disklerden bir tanesini log dosyaları için kullanacağız ve L harfine atayacağız. Bunu da 64K yapalım ve volume label olarak Log diyelim. En son diskimizi ise TempDB olarak ayarlayacağız. Buna da T harfini verelim. Tekrardan 64K seçip volume label olarak TempDB diyelim. Disklerimiz formatlanmış görünüyor. This PC alanına gelip kontrol edelim. Tamamdır, herhangi bir sorun görünmüyor.
SQL Server 2025 Kurulumuna Başlangıç
Şimdi kurulum aşamasına geçebiliriz. Burada SQL Server 2025 ISO dosyasını sunucuya bağladığımızdan emin olalım ve sonrasında setup.exe ile kuruluma başlayalım. Bu ekranı kapatabiliriz. Açılan ekranda sol tarafta Installation diye bir sekme var. Oraya gelelim ve ardından “New SQL Server standalone installation or add features to an existing installation” linkine tıklayalım. Edition alanında uygun bir sürüm seçmemiz gerekiyor. Ortamımıza göre eğer ücretsiz bir sürümü deneyimlemek istiyorsak “Specify a free edition” kısmından ilgili sürümü seçebiliriz. Eğer üretim ortamına kurulum yapıyorsak ve lisansımız varsa, ürün anahtarını buraya girip ardından lisans tipini seçerek ilerleyebiliriz. Ben bu örnekte ücretsiz sürüm olan Enterprise Developer Edition’ı seçeceğim ve kurulumu bu şekilde yapacağım.
Şimdi Next diyelim. License Terms alanında lisans anlaşmasını kabul edebiliriz. Buradaki alanı işaretliyoruz ve ilerliyoruz. Sistem bize Microsoft Update kullanarak güncellemeleri kontrol etmemizi tavsiye ediyor. Tavsiye edilen bu seçeneği işaretleyelim ve Next diyelim. Sistem kurulum için bir problem olup olmadığını arka planda denetledi. Burada failed durumda olan bir madde yok. Ancak warning, yani uyarı alan bir madde var. Bu da Windows Firewall ile ilgili. Aslında bu bizim için çok kritik değil çünkü kurulumun sonlarına doğru çalıştıracağımız bir PowerShell betiği ile gerekli port izinlerini yapılandıracağız. Dolayısıyla bu uyarıyı göz ardı edip ilerleyebiliriz.
Özellik Seçimi ve Instance Yapılandırması
Şimdi daha fazla dikkat edilmesi gereken SQL ayarlarına geçtik. Bu sayfada SQL Server için hangi özellikleri yüklemek istediğimiz soruluyor. Burada tüm özellikleri değil, sadece o an ihtiyacımız olan özellikleri seçmemiz en doğru yaklaşım olacaktır. Biz bu videomuzda sadece Database Engine Services kuracağız. Bu servis, SQL Server’ın asıl veri tabanı motorudur. Verinin saklanması, işlenmesi ve güvenli bir şekilde sunulması bu servis üzerinden sağlanır. Ancak sizin ortamınızda farklı özelliklerin de yüklenmesi gerekiyorsa, ihtiyaca göre buradaki alandan seçip yükleyebilirsiniz. Ayrıca sayfanın altında bazı dizin bilgilerini görüyorsunuz. Burası sadece kurulum dosyalarının tutulacağı yerdir. Biz veri tabanı dosyalarını biraz sonra oluşturmuş olduğumuz disklere ayrıca yerleştireceğiz. Şimdi Next diyelim.
Instance Configuration alanında iki tane seçeneğimiz var. Bunlardan bir tanesi Default Instance, diğeri de Named Instance. Instance ne demek? Instance’ı bir SQL Server motoru veya ayrı bir SQL Server çalışma alanı gibi düşünebilirsiniz. Tek bir sunucu üzerinde tek bir SQL Server instance çalışabileceği gibi, birden fazla instance da kurulabilir. Her instance’ın kendi servisi, kendi veri tabanları, sistem ayarları ve bağlantı yapılandırmaları olur. Biz örneğimizde Default Instance ile devam edeceğiz. Default Instance’ın varsayılan Instance ID’si MSSQLSERVER olur. Eğer TCP/IP aktifse ve SQL Server varsayılan port olan TCP 1433 üzerinde dinliyorsa, bağlantı sadece sunucu adı üzerinden yapılabilir. Yani hostname bilgisiyle bağlantı rahatlıkla sağlanabilir.
Eğer aynı sunucuda birden fazla SQL Server instance çalıştırmamız gerekiyorsa, o zaman Named Instance alanından gerekli ayarları yapmamız gerekir. Named Instance’lar çoğu zaman dinamik port kullanır. Bu durumda istemcilerin doğru portu bulabilmesi için SQL Server Browser servisi gerekebilir. Alternatif olarak Named Instance’a sabit bir TCP port tanımlayıp bağlantıları bu port üzerinden de yönetebiliriz. Özellikle üretim ortamlarında sabit port kullanmak daha kontrollü ve yönetilebilir bir yaklaşım olur. Genellikle enterprise ortamlarda belirli bir port üzerinden bağlantıların sadece yetkili uç noktalara izin verilerek yapılması en iyi uygulama yaklaşımıdır. Biz bu videoda sade, standart ve standalone bir kurulum yapacağımız için Default Instance ile devam edeceğiz.
Servis Hesapları ve Anlık Dosya Başlatma (IFI)
Server Configuration alanında iki tane sekmemiz var. Bunlardan biri Service Accounts, diğeri de Collation. Service Accounts alanında hiçbir ayar yapmasak da sistem çalışır. Fakat biz sunucuyu Active Directory’ye dahil ettik ve ayarları en iyi uygulamalara göre yapılandıracağımız için burada bazı değişiklikler yapacağız. Öncelikle az önce Active Directory ekranında iki tane servis hesabı oluşturmuştuk. Şimdi o servis hesaplarını bu alandan tanımlayalım. Browse diyoruz ve ilgili servis hesaplarını Active Directory alanında aratacak şekilde yapılandırıp uygun kullanıcı hesaplarını seçiyoruz. Ardından yanlarına şifrelerini giriyoruz. Ayrıca SQL Server Agent servisini manuel değil, otomatik çalıştıracağız. Dolayısıyla Startup Type değerini de Automatic olarak değiştiriyoruz.
SQL Server Database Engine için de benzer ayarları yapıyoruz. Ona da uygun servis hesabını tanımlayacağız. Bunu da Active Directory’den seçip şifresini girebiliriz. Biz Default Instance olarak kurulum yapacağımız için burada SQL Server Browser servisini aktif etmemize gerek yok. Bu haliyle Disabled olarak kalabilir.
Ayrıca dikkat ederseniz alt tarafta küçük bir checkbox var: “Grant Perform Volume Maintenance Task privilege to SQL Server Database Engine Service” seçeneği. Bu özellik, SQL Server’ın Instant File Initialization, yani IFI özelliğinden yararlanmasını sağlar. Bu ne işe yarar? Özellikle data file oluşturma, büyütme veya restore operasyonlarında zaman kazandırabilir. Bu yüzden bu seçeneği açmak performans açısından yararlı olabilir. Fakat şirketin güvenlik politikalarına göre de değerlendirilmesi gerekir. Çünkü teorik olarak, daha önce silinmiş disk içeriğine ait veri kalıntılarının okunabilmesi gibi bir bilgi ifşası riski bulunur. Birçok ortamda bu risk kabul edilebilir olsa da, bu ayarın ezbere açılmaması gerekir. Dolayısıyla ortamınıza uygunsa bu özelliği açabilirsiniz. Ben bu özelliği bu ortamımızda açacağım ve aktif hale getiriyorum.
Collation Ayarları ve Kimlik Doğrulama
Şimdi ikinci sekme olan Collation sekmesine geçiyorum. Ezbere yapılmaması gereken bir diğer ayar da Collation’dır. Collation, SQL Server’da karakterlerin nasıl karşılaştırılacağını, nasıl sıralanacağını, büyük/küçük harf veya aksan duyarlılığının nasıl olacağını belirleyen ayardır. Burada en önemli kriter, kurulacak uygulamanın hangi Collation değerini istediğidir. Eğer SQL Server belirli bir uygulama için kuruluyorsa, özellikle o uygulamanın üretici dokümanının kontrol edilmesi gerekir. Bazı uygulamalar belirli bir Collation ile kurulmadığında, kurulum sırasında veya ilerleyen süreçlerde veri karşılaştırma, sıralama, yazı ve raporlama gibi alanlarda sorunlar yaşanabilir.
Eğer uygulamanın özel bir gereksinimi yoksa, kurumun belirli bir standart Collation değeri olabilir. Bu durumda kurum standardına göre bu değerin belirtilmesi gerekir. Eğer böyle bir standart da yoksa, genellikle dil, bölge, case sensitivity ve accent sensitivity gibi ihtiyaçlar değerlendirilerek karar verilmelidir. Ağırlıklı olarak SQL_Latin1_General_CP1_CI_AS ayarı tercih edilebiliyor. Ancak bunun ezbere yapılmaması gerekir. Ben burada bu ayarı yapacak olsam da, sizin kendi ortamınızda en uygun olan Collation değerini seçmeniz en doğru yaklaşım olacaktır. Şimdi bu ayarı seçiyorum: SQL_Latin1_General_CP1_CI_AS. Bunu seçerek OK diyelim ve bir sonraki bölüme geçelim.
Bu alanda birçok sekmemiz var. Ayarların en yoğun olduğu alanlardan biri burasıdır. Bu yüzden burayı da düzgün bir şekilde yapılandırmamız gerekir. İlk sekmede Server Configuration var. Burası, SQL Server’a hangi kimlik doğrulama yöntemiyle bağlanılacağını belirlediğimiz alandır. Burada iki tane mod var: Windows Authentication Mode ve Mixed Mode. Mixed Mode hem Windows Authentication kullanmamızı sağlar hem de SQL Server Authentication kullanmamıza izin verir. Ancak ortamı daha güvenli ve yönetilebilir hale getirmek için mümkünse Active Directory üzerinden kullanıcı ve grup yönetimi yapabileceğimiz Windows Authentication Mode ile ilerlemek en doğru tercih olacaktır.
Bu örnekte de bunun için ayrı bir custom grup oluşturduk. Aşağıda belirleyeceğimiz sysadmin yetkisine sahip kişileri burada belirtirken, tek tek hesaplar yerine özel bir Active Directory güvenlik grubunun oluşturulması ve burada tanımlanması en doğru tercih olacaktır. Burada Domain Admins, Enterprise Admins veya Built-in Administrators gibi yerleşik ve yüksek yetkili grupları kullanmamanızı tavsiye ederim. Bunun yerine ayrı bir grup oluşturup ilgili kişileri o gruba dahil ederek daha düzgün bir yetkilendirme yapabiliriz. Ben burada Add deyip oluşturmuş olduğum grubu ekleyeceğim. Object Types alanında Group seçili olduğundan emin oluyorum. Ardından SQL yazarak ilgili grubu, yani SQL DB Admins grubunu buraya dahil ediyorum. Benim oturum açtığım kullanıcı da bu gruba üye olacak şekilde yapılandırıldı. Bu sayede kurulumdan sonra otomatik olarak bağlantı sağlayabiliyor olacağım.
Veri Dizinleri (Data Directories)
Şimdi ikinci sekme olan Data Directories alanına geçebiliriz. Bu alanda, bildiğiniz gibi öncesinde oluşturmuş olduğumuz diskler vardı. Bu diskleri şimdi Data Directories alanında uygun yerlere yerleştirmemiz gerekiyor. Ancak ondan önce ben bu disklerin altında belirli klasörler oluşturacağım. Siz de buna göre veya kendi ortamınıza uyarlayarak yapılandırmanızı yapabilirsiniz. Öncelikle oluşturmuş olduğumuz disklerin altında MSSQL diye bir klasör oluşturacağım ve bunu her diskin altına yerleştireceğim. Sonrasında burada belirttiğimiz isimlere göre onların altında bir tane daha klasör oluşturacağım. Örneğin Backup diskinde Backup klasörünü oluşturacağım. Böylelikle verilerin de karışmasını ve dağınık bir şekilde tutulmasını engellemiş olacağız. Buraya Data klasörünü ekleyelim, Log klasörünü ekleyelim ve en sonunda TempDB klasörünü ekleyelim.
Evet, şimdi kurulum ekranında bunları uygun alanlara yerleştirelim. Kurulum ekranına geliyoruz. Data root directory dediğimiz kısmı MSSQL klasörüne göstereceğiz. User database directory dediğimiz kısımda ise onun altındaki Data klasörünü göstereceğiz. Yani MSSQL\Data şeklinde ayarlayacağız. Biz data dosyalarıyla log dosyalarını ayırmak istiyoruz. Dolayısıyla bunun için ayrı bir disk oluşturduk. User database log directory alanında da L diskindeki Log klasörünü göstereceğiz. L dizinine geliyoruz, MSSQL altında Log klasörünü seçiyoruz. Backup directory alanında da B diskindeki MSSQL\Backup klasörünü gösterebiliriz.
Bu ayarlarla işletim sistemi ve SQL Server uygulama dosyalarını C diskinde bırakmış olduk. Kullanıcı veri tabanı data dosyalarını D diskinde, transaction log dosyalarını L diskinde tutuyoruz. Yedekleme dosyalarını da B diskinde tutuyoruz. Özellikle data dosyaları ile log dosyalarını ayırmamızın en önemli nedeni, bunların I/O davranışlarının farklı olmasıdır. Data dosyalarında daha çok rastgele okuma/yazma davranışı görülürken, transaction log dosyaları daha sıralı ve yazma ağırlıklı bir karaktere sahiptir. Bu nedenle bu dosyaları ayrı disklerde konumlandırarak daha doğru ve performans açısından daha sağlıklı bir yapı oluşturmuş oluyoruz.
Yedekleri de B diskine aldık. Ancak daha önce de belirttiğimiz gibi, bir üretim ortamında yedeklerin mümkünse aynı sunucuda değil, farklı bir sunucuda veya ayrı bir storage alanında saklanması daha doğru bir yaklaşım olacaktır. Son olarak şunu da belirtmekte fayda var: şu anki lab ortamımızda bu diskler aynı fiziksel depolama üzerinden oluşturulmuştur. Dolayısıyla bir üretim ortamında sadece işletim sistemi seviyesinde farklı disk harfleri oluşturmak tek başına yeterli değildir. Bunun altındaki fiziksel disk yapısı, RAID yapısı, SAN yapısı ve yedeklilik tasarımı da en az dizin ayrımı kadar önemlidir. Buna dikkat etmek gerekir.
TempDB Yapılandırması ve Autogrowth
Bir sonraki sekmemize geçebiliriz: TempDB. TempDB, SQL Server’ın geçici tablolar, sıralama, hash işlemleri ve bazı arka plan iş yükleri için kullandığı sistem veri tabanıdır. TempDB’yi çok küçük bırakıp sürekli autogrowth’a zorlamak doğru bir yaklaşım değildir. Bu yüzden başlangıçta makul bir boyutlandırma yapmamız gerekir. Bu lab ortamında 8 CPU ve 16 GB RAM vardı. Microsoft’un genel önerisi, 8 veya daha az mantıksal işlemci bulunan sistemlerde TempDB data file sayısının işlemci sayısıyla aynı olacak şekilde başlatılmasıdır. Bu nedenle burada 8 adet TempDB data file oluşturacağız. Burada önemli olan sadece dosya sayısı değildir. Ayrıca bu dosyaların aynı boyutta başlaması ve aynı autogrowth değerine sahip olması gerekir. Böylelikle SQL Server bu dosyaları daha dengeli bir şekilde kullanabilir.
Her bir TempDB data file için başlangıç değerini varsayılan 8 MB yerine 512 MB olarak ayarlamamız daha doğru olacaktır. Böylelikle toplamda yaklaşık 4 GB boyutunda bir TempDB data alanıyla başlamış olacağız. Buradaki 4 GB değeri resmi ya da evrensel bir en iyi uygulama değeri değildir. Bu değer, gerçek workload’u henüz bilmediğimiz bir lab ortamında TempDB’yi varsayılan 8 MB gibi çok küçük bırakmamak için seçtiğimiz kontrollü bir başlangıç değeridir. Üretim ortamlarında TempDB boyutu; uygulamanın geçici alan kullanımı, sorgu yoğunluğu, indeks işlemleri ve benzeri operasyonlar izlendikten sonra değerlendirilmelidir. Gerekirse sonradan tekrar düzenlenmesi en doğru yaklaşım olacaktır.
Autogrowth, yani otomatik büyüme ayarını MB cinsinden sabit bir değer olarak atamak, büyümeyi daha öngörülebilir hale getirir. Biz buradaki değeri 64 MB yerine 256 MB olarak işaretleyeceğiz. Ancak şunu unutmamak gerekir: autogrowth bir kapasite planlama yöntemi değildir. Bu aslında beklenmeyen durumlar için bir güvenlik mekanizması olarak düşünülmelidir. En doğru yaklaşım, dosyaları baştan mümkün olduğunca doğru boyutlandırmak ve sürekli autogrowth’a ihtiyaç bırakmamaktır. Biz de bu ayarlarla bunu yapmayı planlıyoruz. Üst tarafta TempDB data file’ları vardı. Alt tarafta ise TempDB log file ayarları var. Bunlar için de başlangıç boyutunu 8 MB yerine 1024 MB, yani 1 GB olarak ayarlayıp autogrowth değerini yine 256 MB yapabiliriz. Log dosyasını çok küçük bırakmak istemiyoruz. Çünkü log büyüme işlemleri yoğun sistemlerde kısa süreli beklemelere neden olabilir. Dolayısıyla daha kararlı ve biraz daha geniş bir dosya boyutuyla başlamak daha doğru bir tercih olacaktır. Son olarak bildiğiniz gibi TempDB için ayrı bir disk ayırmıştık. Şimdi o diski tanımlayalım. Burada Add diyerek T diskindeki TempDB klasörünü seçiyoruz ve eski yolu buradan kaldırıyoruz. Bu şekilde TempDB ayarlarını güncellemiş oluyoruz.
MAXDOP ve Memory Ayarları
Şimdi bir sonraki sekmemiz MAXDOP sekmesi. MAXDOP, SQL Server’da tek bir sorgunun aynı anda en fazla kaç CPU çekirdeğini kullanabileceğini belirleyen bir ayardır. Buradaki amaç SQL Server’ı rastgele hızlandırmak değil, sorguların CPU kullanımını daha kontrollü hale getirmektir. Microsoft’un genel yaklaşımı, bu değeri işlemci sayısına göre belirlemek ve sonrasında gerçek kullanım durumuna göre izlemektir. 8 veya daha az CPU çekirdeği olan sistemlerde bu değerin genellikle çekirdek sayısına eşit veya daha düşük seçilmesi tavsiye edilir. Daha büyük sistemlerde ise başlangıç değeri olarak 8 kullanılabilir. Bizim lab ortamımızda 8 CPU var. Ancak daha kontrollü bir başlangıç yapmak istediğimiz için bunu 8 olarak değil, 4 olarak ayarlayacağız. Daha sonra ihtiyaca göre düzenleyebiliriz. Çünkü bu ayar için her ortamda kesin ve tek doğru bir değer olduğunu söyleyemeyiz. Bu ayarları yaptıktan sonra CPU tüketimini, sorgu performansını ve genel kullanım davranışlarını analiz ederek gerekirse bu değeri yeniden düzenlemek gerekir.
Bir sonraki sekme Memory sekmesi. SQL Server’ın Max Server Memory değeri varsayılan olarak bırakıldığında, SQL Server ihtiyaç duydukça sunucudaki belleğin büyük bir kısmını kullanabilir. Bu, her zaman anlık olarak tüm RAM’i kullanacağı anlamına gelmez. Ancak işletim sistemi ve sunucudaki diğer bileşenler için yeterli bellek ayrılmadığında performans sorunlarına neden olabilir. Bu yüzden varsayılan ayar yerine Recommended seçeneğini kullanmamız, SQL Server için bir üst bellek limiti belirlememizi sağlar. Böylelikle SQL Server’ın RAM kullanımını kontrol altına almış oluruz. Ayrıca burada Minimum Server Memory ve Maximum Server Memory değerleri var. Biz Minimum Server Memory değerini şu an için 0 bırakabiliriz. Çünkü Minimum Server Memory, SQL Server başlar başlamaz bu kadar belleği rezerve edecek anlamına gelmez. SQL Server bu seviyeye ulaştıktan sonra belleği mümkün olduğunca bu sınırın altına düşürmemeye çalışır. Bu lab ortamında tek bir instance çalıştığı için Minimum Server Memory değerini artırmaya gerek görmüyoruz. Bu yüzden bu şekilde bırakıyoruz. Kurulum sırasında yapılan memory ayarları da aslında bir başlangıç noktasıdır. Sonrasında ortam analiz edildikçe bu değerlerin ihtiyaca göre düzenlenmesi gerekir. Ancak biz başlangıç olarak bu ayarlarla rahatlıkla devam edebiliriz. Son olarak sistemin bu memory ayarlarını uygulayabilmesi için burada küçük bir checkbox var: “Click here to accept the recommended memory configurations for the SQL Server Database Engine.”. Bu ayarı da işaretleyerek SQL Server’ın önerilen memory yapılandırmasını uygulamasına izin vermiş oluyoruz.
FILESTREAM ve Kurulumun Tamamlanması
Bu ayardan sonra son bir sekmemiz kalıyor. O da FILESTREAM sekmesi. Bu ayar güçlü ama daha niş bir özelliktir. SQL Server’ın doküman, görsel ve benzeri büyük binary objeleri Windows dosya sistemiyle entegre şekilde saklamasını sağlar. Bu ayar ihtiyaca göre açılır. Örneğin ortamda büyük BLOB verileri varsa, uygulama bunu destekliyorsa veya hızlı streaming erişimi gerekiyorsa bu özellik açılabilir. Bizim yapımızda bu tür bir özelliğe ihtiyaç olmadığından ve gereksiz bir yönetim yükü oluşturmamak açısından bu ayarı kapalı bırakıyoruz ve Next diyoruz.
Bu haliyle kurulum sihirbazının teknik sekmelerini tamamladık. Şimdi SQL Server kurulumuna başlayabiliriz. Bu noktada sizi daha fazla bekletmemek için videoyu mümkün olduğunca ileri sarıyor olacağım ve sonrasında devam edeceğiz.
SQL Server kurulumu tamamlandı. Burada gördüğünüz gibi seçtiğimiz özellikler başarılı bir şekilde yüklenmiş görünüyor. Yine de genel bir kontrol için ilgili log dosyasını kontrol edelim. Şuradaki linke tıklayalım ve log dosyasını açalım. Overall Summary altında Final Result bölümünde Passed yazıyor. Yani kurulum başarılı bir şekilde tamamlanmış. Exit code değeri de 0. Bu da kurulum işleminin başarılı bir şekilde tamamlandığını gösteren koddur. Bu şekilde kurulum ekranımızı kapatabiliriz.
Kurulum Sonrası PowerShell Kontrolleri
Şimdi kurulum sonrası temel kontrollere geçelim. Buradaki ekranları kapatalım. Şimdi Default Instance için bazı kurulum sonrası kontrolleri yapacağımız bir PowerShell script’i çalıştıracağız. Bu script özellikle ilgili servislerin hangi hesaplarla çalıştığını kontrol ediyor. Ayrıca servislerin çalışıp çalışmadığını, TCP/IP protokol ayarlarını, Windows Firewall üzerinde gerekli portların açık olup olmadığını da kontrol ediyor. Eğer bir problem varsa TCP/IP ayarları, TCP 1433 portu veya firewall kuralı gibi alanları düzenliyor. Servis durmuşsa yeniden çalıştırıyor.
Bunun için C diskinde bir klasör oluşturacağım ve altına bir TXT dosyası açacağım. Önce dosya uzantılarını görünür hale getirelim. Ardından ilgili script’imizi buraya yapıştıralım. Bu script’i isterseniz web sitemizden de indirebilirsiniz. Uzantısını .txt’den .ps1’e çevirelim ve yönetici yetkisiyle bir PowerShell ekranı açalım. İlgili dizine düştükten sonra PowerShell script’ini çalıştırabiliriz. Burada gördüğünüz gibi temelde SQL servislerinin hesaplarını kontrol etti ve ilgili hesaplarla çalıştığını gördü. Sonrasında TCP/IP protokolünü ve ilgili port bilgilerini kontrol etti. Windows Firewall’da da gerekli port ayarlarını yaparak bu işlemi tamamlamış olduk.
Bu script sadece Default Instance ve TCP 1433 portu için hazırlanmıştır. Eğer ortamda Named Instance varsa, Always On kullanılıyorsa, Failover Cluster varsa veya farklı bir port kullanılıyorsa, bu script’in ilgili ortama göre uyarlanması gerekir. Dolayısıyla buna dikkat etmenizde fayda var.
SSMS Kurulumu ve Bağlantı Testi
Şimdi bir sonraki işlemde SQL Server Management Studio’yu (SSMS) kuracağız. SQL Server Database Engine ana veri tabanı servisidir. SSMS ise bu servise bağlanıp SQL Server veri tabanı motorunu görsel olarak yönetmemizi sağlayan bir araçtır. SQL Server kurulumu ile birlikte otomatik olarak gelmez. Bunu ayrıca Microsoft’un web sitesinden indirmemiz gerekiyor. Bunu da açıklamalar bölümündeki linklere ekliyor olacağım. Google’a gelelim. SQL Server Management Studio yazalım ve Download diyelim. Buradaki alandan 22. sürümü indirebiliriz. Şu an en son sürüm olarak görünüyor. Tıklayalım. Yes diyelim. Bu sayfaları artık kapatabiliriz. Continue diyelim ve bu ekrandan da çıkalım. Bu ekranda ek bir bileşen seçmemize gerek yok. Direkt Install diyerek kurulumu yapabiliriz. Ben bu kısmı da sizi fazla bekletmemek adına ileri saracağım. Sonrasında kalan ayarlar için birlikte devam edebiliriz.
Kurulum işlemimiz tamamlandı. Uyarıda sunucuyu yeniden başlatmamız tavsiye ediliyor. Bunu daha sonra da yapabiliriz. OK diyerek çıkalım ve SQL Server Management Studio’yu açalım. Burada hesap oluşturmayla alakalı bir uyarı veriyor. “Skip and add accounts later” diyerek bu ekranı geçebiliriz. Burada özellikle veri tabanına bağlanıp bir sorgu çalıştırarak ilgili versiyonu doğru çekip çekmediğimizi ve temel ayarları doğru yapıp yapmadığımızı kontrol etmek istiyorum. Server Name kısmına sunucunun adı olan SQL-SRV değerini giriyorum. Burada bağlantı için otomatik olarak bu sunucu bilgisi kullanılacak.
Authentication kısmında, hatırlarsanız sadece Windows Authentication’ı kabul etmiştik. Bu yüzden oturum açtığımız hesapla bağlantı yapıyoruz. Encrypt bölümünü Mandatory değil, Optional olarak seçelim. Ardından Trust Server Certificate seçeneğini işaretleyelim ve Connect diyelim. Bunu yaparken, kurulumda belirttiğimiz kullanıcı grubuna bu kullanıcının üye olmasını bekliyoruz. Ben zaten bu şekilde ayarları yapmıştım. Dolayısıyla herhangi bir sorun olmadan bağlanabiliyor olmam gerekiyor. Evet, veri tabanımıza sorunsuz bir şekilde bağlanabildik.
Klasik olarak SELECT @@VERSION sorgusunu çalıştırarak ilgili versiyonu kontrol edelim. Bunun için New Query diyelim ve SELECT @@VERSION komutunu yazıp sorgumuzu çalıştıralım. Burada gördüğünüz gibi çıktı bölümünde Microsoft SQL Server 2025 kurulu olduğu yazıyor. Ayrıca Enterprise Developer Edition bilgisini de doğru bir şekilde görüyoruz. Sorgularımız çalışıyor, veri tabanına bağlanabiliyoruz ve script’lerle de ilgili yapıyı temel olarak ayarlayabildik. Bu son kontrol ile videomuzun sonuna gelmiş olduk. Umarım yararlı olmuştur. Bir sonraki videoda görüşmek dileğiyle. Hoşça kalın.