SQL Server 2005 ile birlikte DAC (Dedicated Administrator Connection), SQL Server’in yoğunluktan, kilitlenmenin oluşmasından hiçbir bağlantıya yanıt vermediği bir anda sistem yöneticisinin sisteme giriş yapabilmesini sağlayan önemli bir özelliktir. Bu tür durumlarda SQL Server’i restart etmek sorun yaratabileceği için sisteme bağlanıp olup biteni görmekte fayda var. Bunun için öncelikle sunucunu DAC özelliğinin aktif olması gerekir. Bu özelliği yere veya uzaktan erişim için ayarlayabiliriz.
Use master GO --0 = Yerel Bağlantı İzni, --1 = Uzak Bağlantı İzni sp_configure 'remote admin connections', 0 GO RECONFIGURE GO
SQL Server 2005’te “Surface Area Configuration” aracında da aynı ayara erişilebilir.
Bu özelliği aktifleştirdikten sonra SQL Server’e hem komut satırından (SQLCMD) hem de Management Studio üzerinden erişiebiliriz.
Management Studio içerisinden bağlanırken sunucu adının başına ADMIN: ifadesi yazılır.
SQLCMD komutuna -A parametresi girmemiz DAC bağlantının aktifleştirir. Veya sunucu adı başında “ADMIN:” olacak şekilde yazılır. Aşağıdaki satırda DW makinesine DAC ile bağlanmasını sağlar.
SQLCMD -A -SDW -E
veya
SQLCMD -SADMIN:DW -E
Sisteme bağlandıktan sonra lock, session, request durumlarına bakmak için ilgili view ve prosedürler kullanılır. Sistemi çok meşgul eden bir oturum varsa ve hayati değilse KILL edilir.
Sistem üzerinde aynı bir tane DAC bağlantı kurulabilir. İkinci bir DAC bağlantısı yapmak istediğimiz sistem böyle bir sunucunun olmadığı hatası döndürecektir. Hangi oturumun DAC bağlantıyla içeride olduğunu anlamak için aşağıdaki script kullanılabilir.
select case when ses.session_id= @@SPID then 'Bu Oturum' else '' end + coalesce(ses.login_name,'???') as WhosGotTheDAC, ses.session_id, ses.login_time, ses.status, ses.original_login_name from sys.endpoints as en join sys.dm_exec_sessions ses on en.endpoint_id=ses.endpoint_id where en.name='Dedicated Admin Connection'
Burada endpoint görünümünden okuma yapmamızın nedeni DAC’ın temelde Dedicated TCP Endpoint kullanıyor olmasındandır.
DAC oturumunda veritabanıyla ilgili her türlü işlemden ziyade daha çok yönetimsel işlemlerin yapılmasına izin verilir. Örneğin BACKUP-RESTORE işlemleri yapılamaz.
DAC bağlantı özelliğini aktifleştirdiğimiz zaman SQL Server, normal portundan farklı yeni bir portu aktifleştirip bu hizmeti o port üzerinden sağlar. Bu port bilgisi log satırında yazıldığı gibi registry tarafında da tutulmaktadır.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10.XXX\MSSQLServer\SuperSocketNetLib\AdminConnection\Tcp\TcpDynamicPorts