Bu makalede SPN ve SPID kavramlarının ne olduğuna değinmiş olacağım. Sql server da çok sık karşılaştığımız bu iki kavramın ne olduğuna değinelim.
SPN (Service Principal Name), bir servisin, Kerberos Authentication protokolü aracılığıyla doğrulama yapmak için kullanılan benzersiz bir kimliktir. SPN, Active Directory (AD) ortamında bir servis ile ilişkilendirilmiş olan bir tanımlayıcıdır ve o servisin bir ağda kimlik doğrulama işlemlerinde tanınmasını sağlar.
SQL Server’a bağlanırken, SQL Login kullanan bir kullanıcı SQL Server Authentication ile kimlik doğrulaması yapar.
SPN’ler ise Kerberos Authentication için gereklidir, yani SQL Server, bir istemcinin bağlanırken Kerberos üzerinden kimlik doğrulaması yapması gerektiğinde SPN’lere başvurur. SPN’ler, Active Directory’deki hesaplar ile ilişkilendirilmiş ve ağ üzerinden iletişimi sağlayan kimlik doğrulama bilgileridir.
SPN Örneği:
MSSQLSvc/sqlserver01.contoso.com:1433
Açılımı:
- MSSQLSvc → SQL Server hizmeti
- sqlserver01.contoso.com → Hem bilgisayar adını, hem de ait olduğu domain adlarını içerir.
- 1433 → SQL Server’ın dinlediği TCP portu
Bu SPN, istemcilerin sqlserver01.contoso.com sunucusunda 1433 portundan SQL Server’a bağlanırken Kerberos ile kimlik doğrulaması yapmasını sağlar.
SPN’nin Kullanım Alanları:
- SPN’ler, SQL Server instance’ları ve diğer hizmetler için, Kerberos Authentication sağlamak amacıyla Active Directory içinde yapılandırılır. Bu, istemci uygulamasının, sunucuya bağlanabilmesi için gerekli kimlik doğrulamasını yapabilmesini sağlar.
- SQL Login ile bağlanan bir kullanıcı, SPN’lerin ne olduğunu veya hangi SPN’nin kullanıldığını doğrudan göremez. SPN’ler, ağdaki kimlik doğrulama süreçlerinde arka planda çalışır.
Kullanıcı ve SPN İlişkisi:
- Eğer bir kullanıcı SQL Server’a bağlanırken Kerberos kullanıyorsa, SQL Server, istemci ile sunucu arasındaki bağlantı için doğru SPN’yi kullanır. Ancak, SPN’ler yalnızca ağdaki güvenlik doğrulaması ve iletişimi için kullanılır, kullanıcının doğrudan görmesi ya da erişmesi gereken bir bilgi değildir.
- SPN’ler setspn komutları veya Active Directory aracılığıyla yönetilir, ve bu bilgiler genellikle veritabanı yöneticileri ya da sistem yöneticileri tarafından kontrol edilir.
Kerberos ve NTLM:
- Eğer SPN doğru şekilde yapılandırılmamışsa, Kerberos authentication devreye girmeyebilir ve SQL Server bağlantısı NTLM (Windows’un bir başka kimlik doğrulama protokolü) ile yapılabilir. Bu durumda, SPN’lerin rolü azalır, ancak yine de arka planda doğru kimlik doğrulaması için gerekli olabilir.
Sonuç:
SPN, bir ağda bir servisin kimlik doğrulaması için kritik öneme sahiptir. SQL Server gibi veritabanı servisleri veya web uygulamaları gibi servisler için doğru SPN ayarlamaları, güvenli ve düzgün çalışan kimlik doğrulama işlemlerinin sağlanabilmesi için gereklidir.
SQL Login ile bağlanan bir kullanıcı, doğrudan SPN (Service Principal Name) bilgilerini görmez. Ancak, SPN’ler Kerberos Authentication’ı doğru bir şekilde çalıştırabilmek için kullanılır, yani SPN’ler, istemci ile sunucu arasındaki güvenli bağlantıyı sağlamak için gereklidir. SQL Server ve istemci arasında bir Kerberos kimlik doğrulaması yapıldığında, SPN’ler arka planda otomatik olarak kullanılır, fakat doğrudan kullanıcıya gösterilmez.
Aşağıdaki yapı ile spn kayıtları kontrol edilmektedir. Powershell üzerinden çalışmaktadır. Sql server servis hesanı yazılmaktadır.
setspn -L "Sql_Servis_Hesabı"
Servis hesabı birden fazla sunucuda set edilmişse tek bir sunucu üzerinde spn kayıtlarının set edilmesi gerekmektedir.
Sunucu üzerinde Spn kayıtları için aşağıdaki komutlar kullanılmaktadır. Powershell üzerinden çalışmaktadır.
# SQL Server Availability Group için SPN
setspn -S MSSQLSvc/AG_Listener.yunusyucel.com:1453 YCL2025\SqlUser
setspn -S MSSQLSvc/AG_Listener.yunusyucel.com:INSTANCE_NAME YCL2025\SqlUser
# Sunucu ilgili port için SPN
setspn -S MSSQLSvc/Server1.yunusyucel.com:1433 YCL2025\SqlUser
setspn -S MSSQLSvc/Server2.yunusyucel.com:1433 YCL2025\SqlUser
# Sql Server Instance için SPN
setspn -S MSSQLSvc/Server1.yunusyucel.com:INSTANCE_NAME YCL2025\SqlUser
setspn -S MSSQLSvc/Server2.yunusyucel.com:INSTANCE_NAME YCL2025\SqlUser
Yanlış oluşturulan Spn kayıtlarını silmek için aşağıdaki yöntem kullanılmaktadır.
setspn -d MSSQLSvc/S3.yunusyucel.com:1433 YCL2025\SqlUser
Gerçek sistemlerde linked server ortamlarında kullanılan farklı instance’larda spn kaydına eklenmektedir.
Önemli Notlar
Domain Admin yetkileri gerekebilir
SPN’lerin unique olması gerekiyor
SqlUser hesabının “Log on as a service” hakkı olmalı
Firewall’dan 1453 portu açık olmalı
Sunucu üzerinde spn kayıtlarını görmek için Kerbelos Configuration Manager for Sql Server tool indirilir.

Yukarıdaki resimdeki Tool indirildikten sonra sunucu üzerinde çalıştırılır. Sunucu üzerine yükleme işleminde herhangi bir sorunla karşılaşmayız. Yüklendikten sonra C diski altında aşağıdaki dizinde çerçeve içerisine alınan ifade çalıştırılır.


Gelen ekranda Connect butonuna tıklanır.

Gelen ekranda spn kayıtlarını öğrenmek istediğimiz sunucu girilmesi sonucu gelen ekranda hangi kayıtların olduğu hangi kayıtların eksik olduğunu bizlere söylemektedir.

Kerberos uygulaması bize eksik olanları listeleyecektir. AD katmanında yönetici tarafından error olarak gelen sonuçlar fixlenerek SPN kayıtları güncellenir.


SPN benzersiz bir tanımlayıcı olduğu için Active directory katmanında tek olması gerekmektedir. Duplicate olması durumunda hangi SPN’leri duplicate olduğu bulunup kaldırılması gerekmektedir. Bu işlemlerin hepsi Powershell üzerinden Run as Administrator olarak çalıştırılarak dikkatli bir şekilde yapılmalıdır.
SPID (Server Process ID) Nedir?
Her SQL Server oturumu (session), bir SPID (Server Process ID) ile tanımlanır. sp_who2 veya sys.dm_exec_sessions gibi sorgularla SPID’lerin hangi işlemleri yürüttüğünü görebilirsiniz.
SQL Server Error Loglarında sıkça karşılaşılan SPID’ler, belirli sistem süreçleri veya kullanıcı işlemleriyle ilişkilidir.
SQL Server, dahili işlemleri için 1 ila 50 arasındaki SPID’leri kullanır. Bu SPID’ler kullanıcı sorgularına ait değildir ve doğrudan yönetilemezler.
SPID | Açıklama |
---|---|
SPID 1 | System Process – SQL Server’ın temel sistem süreci. |
SPID 2 | Log Writer – Transaction log’ları diske yazar.(ldf) |
SPID 3 | Checkpoint Process – Sayfalardaki değişiklikleri diske yazar.(mdf-ndf) |
SPID 4 | Lazy Writer – Belleği yöneten süreç. |
SPID 5 | Ghost Cleanup – Silinen satırları fiziksel olarak temizler. |
SPID 6 | Deadlock Monitor – Ölü kilitleri (deadlocks) tespit eder. |
SPID 9 | SQL Server Resource Monitor – Bellek ve CPU kullanımını izler. |
SPID 10 | Scheduler Monitor – SQL Server thread yönetimini denetler. |
SPID 11-15 | System Processes – İç sistem işlemleri için ayrılmıştır. |
SPID 16-50 | Arka plan ve yönetim süreçleri (bazı servisler, Replication vb.). |
SPID 50 ve üstü, kullanıcı bağlantıları ve belirli SQL Server bileşenleri tarafından kullanılır.
SPID | Açıklama |
---|---|
SPID 51+ | Kullanıcı bağlantıları (oturumlar) için atanmış SPID’ler. |
SPID 100-150 | SQL Server Agent Job’ları – Zamanlanmış görevleri çalıştırır. |
SPID 1800+ | Always On Availability Group işlemleri (Replikasyon, senkronizasyon vb.). |
SPID 2000+ | Background Task Scheduler – Sistem görevleri için ayrılmış arka plan süreçleri. |
SPID 3000+ | Extended Events, Query Store vb. ile ilişkili süreçler. |
SPID Sonlandırma:
KILL 1860;
Özet
- SPID 1-50 → Sistem süreçleri için ayrılmıştır.
- SPID 50+ → Kullanıcı bağlantıları ve SQL Server Agent Job’ları gibi işlemler için kullanılır.
- SPID 1000+ → Always On Availability Groups, Query Store, Extended Events gibi sistem bileşenleri tarafından atanabilir.
Error Loglarında sıkça görülen SPID’ler, genellikle bellek yönetimi, mirroring, Always On, agent job’ları ve veritabanı başlangıcıyla ilgilidir.
Başka bir makalede görüşmek dileğiyle.
“Allah içinizden iman edenlerin ve kendilerine ilim verilenlerin derecelerini yükseltir.” Mücâdele – 11