SQL Server Dedicated Administrator Connection (DAC)

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

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir