Sql server kurulumu sırasında services account hesabı farklı kullanıcılar üzerinde yapılabilir. Bunlar resimde görüldüğü gibi domain kullanıcısı, local servis kullanıcısı, network servis kullanıcısı, local administrator kullanıcımız ve managemed kullanıcılarından oluşmaktadır.

Kurulumu sırasında active directory üzerinde bir kullanıcı oluşturarak sql server service hesabımı bu şekilde yapmış oldum. Zaten AlwaysOn kurulumu için domaindeki bir servis hesabının olması gerekmektedir. Genel bir bir verelim:
SQL Server Always On Yüksek Erişilebilirlik Çözümünü Kurarken Servis Hesapları
SQL Server Always On yüksek erişilebilirlik çözümünü kurarken, aynı servis hesaplarının kullanılması genellikle önerilir, ancak zorunlu değildir. Ancak, Always On failover cluster ve Availability Group özelliklerinin düzgün çalışabilmesi için bazı önemli gereksinimler ve en iyi uygulamalar vardır. Bu konuda dikkat edilmesi gereken noktalar şunlardır:
Always On için Servis Hesapları:
- Aynı Servis Hesaplarının Kullanılması:
Aynı servis hesapları kullanmak genellikle tavsiye edilir çünkü bu, servislerin birbiriyle uyumlu çalışmasını ve güvenlik yetkilendirmelerinin tutarlı olmasını sağlar. Özellikle, SQL Server ve Windows Server Failover Cluster (WSFC) servislerinin aynı kullanıcı hesapları altında çalışması, veritabanı erişim izinleri ve failover işlemlerinin düzgün gerçekleşmesini sağlar.
Farklı servis hesapları kullanmak, ağ erişim izinleri, güvenlik grubu üyelikleri veya belirli kaynaklara erişim gibi sorunlara yol açabilir. Bu nedenle, her iki node üzerinde aynı hesap kullanmak, yönetimsel karmaşıklığı azaltabilir. - Farklı Servis Hesaplarının Kullanılması:
Eğer farklı servis hesapları kullanmak istiyorsanız, her bir SQL Server örneği (instance) için doğru izinlerin verilmesi önemlidir. Bu hesapların birbirleriyle uyumlu olmasını sağlamak için aşağıdaki noktalara dikkat edilmelidir: Her bir node’da kullanılan SQL Server servis hesaplarının, her iki node’da da Windows Authentication ile erişebileceği ortak kaynaklara sahip olması gerekir. Ayrıca, Failover Cluster ve Availability Group‘ların düzgün çalışabilmesi için belirli güvenlik izinleri ve grup üyelikleri sağlanmalıdır. Her iki SQL Server instance’ı arasında SQL Server Always On Availability Group kullanırken, servis hesaplarının domainde geçerli yetkilere ve doğru izinlere sahip olması gerekir. Bu, her iki node’un da ağ kaynaklarına ve cluster servislerine sorunsuz bir şekilde erişebilmesini sağlar. - Service Principal Name (SPN):
SPN ayarları, Always On’un çalışabilmesi için önemli bir faktördür. Servis hesapları, SQL Server’ın düzgün çalışabilmesi için doğru SPN’lere sahip olmalıdır. SPN’ler, SQL Server instance’larının Kerberos authentication için doğru şekilde tanınmasını sağlar. Aynı servis hesapları kullanıyorsanız, SPN yönetimi daha kolay olur, ancak farklı servis hesapları kullanıyorsanız, her bir hesap için uygun SPN’lerin manuel olarak yapılandırılması gerekebilir. - SQL Server Service Accounts ve Network Access:
Cluster Nodes arasında ağ erişimi gereklidir ve her iki SQL Server instance’ı aynı domain üzerinde olmalıdır. Ayrıca, her iki SQL Server instance’ının SQL Server failover cluster ve Always On Availability Groups için doğru ağ izinlerine sahip olması gerekir.
SQL Server instance’ları, hem Windows Server Failover Cluster için hem de Always On Availability Group‘ları için doğru servis hesaplarıyla yapılandırılmalıdır.
Aynı servis hesaplarının kullanılması, yönetimi basitleştirebilir ve ağda güvenlik sorunlarını engelleyebilir. Bu, genellikle en iyi uygulama olarak kabul edilir.
Ancak, farklı servis hesapları da kullanılabilir, ancak her bir node’da doğru güvenlik izinlerinin sağlanması ve SPN ayarlarının yapılması gerekecektir.
Eğer Always On kurulumunda farklı servis hesapları kullanacaksanız, her bir servisin ağ ve güvenlik izinlerini dikkatlice yönetmeniz gerekir.

Oluşturmuş olduğum bu kullanıcı hesabının yetkili bir şekilde çalışabilmesi için bazı yetkilerin verilmesi gerekmektedir. Sql server servis hesabına verilecek minumum yetkilerden bazıları aşağıda belirtilmiştir.
Windows arama yerine Run yazıyoruz. Gelen ekranda secpol.msc yazarak Local Security Policy bölümüne giriyoruz. Gelen ekranda Local Policies bölümünde gerekli bazı konfigürasyonların yapılması gerekmektedir. Şimdi bu yetkilendirmelere değinelim.

Bypass traverse checking: Bu yapı Windows dosyaları arasında geçişler ve yapılacak işlemler için izin almadan çalışabilmesini sağlar.

Bypass traverse checking bölümüne tıkladıktan sonra Add User or Group kısmından sql server servis hesabını ekliyorum.

Log on as a service: Windows üzerinde tanımladığınız uygulamamın bir servis gibi çalışabilmesine izin verir. Bu yüzden sql server servis hesabını ve sql server agent servis hesabının burada tanımlanması gerekmektedir.

Log on as a service bölümüne tıkladıktan sonra Add User or Group kısmından sql server servis hesabını ekliyorum.

Lock Pages In Memory: Bu yapı ile sql server’ın sahip olduğu memory’in Windows’a geri verilmesi engellenmiş olur. Bu yapıda buffer pool için windows’dan almış olduğu memory’i bir daha windows’a iade etmez. Bu ayarı yapmadan önce windows’a gerekli ram miktarı bırakmalıyız.

Lock Pages In Memory bölümüne tıkladıktan sonra Add User or Group kısmından sql server servis hesabını ekliyorum.

Sql server’ın kullanacağı max ve min memory ifadesini instance’a sağ tıklayıp properties ekranından düzenleyebiliriz. Ne kadar memory sql server’a ne kadar windows’a bırakmak da kararsızsanız aşağıdaki sayfa bize yardımcı olabilir.

Log on as a batch job: SQL Server üzerinden windows üzerinde bir işlem yapılması gerektiğinde(örneğin bazı scriptler içeren bir bat dosyası çalıştırmak) sql server’ın kullanacağı hesabın burada tanımlanması gerekir. SQL Server’ın kullandığı hesabın diyorum çünkü bu işlemi job olarak tanımlarsanız sql server agent hesabını tanımlamanız gerekir. Eğer job’ı bir proxy ile çalıştıracaksanız ilgili credential’a ait hesabı burada tanımlamanız gerekir.

Log on as a batch job bölümüne tıkladıktan sonra Add User or Group kısmından sql server servis hesabını ekliyorum.

Perform volume maintenance tasks: SQL Server’ı hızlandıracak bir işlemdir. Muhakkak gerekli konfigurasyonun yapılması gerekir.
Bu özellik aktif hale getirildiğinde SQL Server’a ait data dosyaları üzerinde yapılacak işlemlerin daha hızlı bir şekilde gerçekleştirilmesi sağlanmış olur. Veritabanı oluşturma, veritabanına data file ekleme, veritabanının data file boyutunu arttırma ya da autogrowth ile bu işlemin gerçekleşmesi, olmayan bir veritabanını restore etmek işlemlerinden herhangi biri gerçekleştiğinde SQL Server tarafından file allocation isteği gelir. Allocate edilmesi istenen bu alanlar 0’lar ile doldurulur ve daha sonra sql server’a tahsis edilir. Tabi büyük işlemlerde tahsis edilmesi istenen alanların 0 ile doldurulması biraz zaman alır. SQL Server Servis hesabına Windows üzerinde, perform volume maintenance tasks için gerekli yetki verildiği takdirde, sql server’dan file allocation isteği geldiğinde data dosyaları için 0 ile doldurma işlemi yapılmadan istenilen alan sql server’a tahsis edilir. Bu şekilde istenilen alan’ın 0 ile doldurulmasıyla geçecek süre kazanılmış olur. Sunucu üzerinde silinen alanlar deleted olarak işaretlenir. Sonra sql server yeni bir alana ihtiyaç duyduğu zaman bu boş olan bu deleted olanları sql server 0 ile doldurmadan kullanır. Bu işlem daha çok log dosyaları üzerinden etkili olmaktadır. Disk ilk konumunda bu alanlar sıfır ile doludur zaten. Disk üzerinde normal silme işlemlerinden sonra silinen alanlar için deleted olarak işaretleniyor. Tekrardan sıfırla dolum işlemleri yapılmıyor. Şimdi Instant File Initialization ’ı aktif hale getirdiğimizde yukarıdaki belirttiğimiz işlemler üzerindeki etkisini test edebiliriz. Bu konfigürasyonlar sonucu saatlerce süren işlemler dakikalar mertebesine inmektedir.
Bu özellik aktif hale getirildiğinde SQL Server’a ait data dosyaları üzerinde yapılacak işlemlerin daha hızlı bir şekilde gerçekleştirilmesi sağlanmış olur.

Perform volume maintenance tasks bölümüne tıkladıktan sonra Add User or Group kısmından sql server servis hesabını ekliyorum. Sql Server Servisi Restart ederek işlemler tamamlanır.

Performans anlamında bize çok büyük katkıları olmaktadır. Katkılarının yanında dezavantajlarıda vardır. Perform Volume Maintenance Task üzerinde SQL Server Servis hesabını yetkilendirdiğimizde, sql server tarafından talep edilen disk allocation anında, talep edilen alanın 0’lar ile doldurulmadan sql server’a tahsis edilir. Ama sql server tarafından alınan bu alan üzerinde oluşan data silindiğinde üzerine 0 yazılmadan tekrar windows’a iadesi yapılıyor. Ve Data üzerinde encryption yoksa sunucu üzerinde yetkili biri çeşitli tool’ları kullanarak SQL Server’ın iade ettiği bu alanı okuyabilir.
Replace a process-level token: Bir servisin başka servisleri çalıştırabilme yetkisi olarak karşımıza çıkmaktadır. Yetki vermek istersek yukarıdaki adımların aynısını yapmamız gerekiyor.
Adjust memory quotas for a process: Bir process için RAM kullanım sınırlaması yapabilme yetkisi
Başka bir makalede görüşmek dileğiyle..
Onlar, gaybe inanırlar, namazı dosdoğru kılarlar ve kendilerine rızık olarak verdiklerimizden infak ederler. Bakara Suresi, 3. Ayet