Bu makalede Dedicated Admin Connection yapısını detaylı bir şekilde görmüş olacağız. SQL Server’ın 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. Sql server’da maksimum connection sayısı 32767 bazen tüm bu connectionların limitini dolabilir. SQL Server en fazla 32,767 client connection’ı destekler. Ama bu teorik maksimumdur. Gerçek hayatta bu sayıya çıkmak neredeyse imkansızdır çünkü sunucu kaynakları (RAM, CPU, ağ, vs.) buna izin vermez. SQL SERVER bu işlemler için ikinci bir kapı olarak nitelendirilen Dedicated Administrator Connection(DAC) ile bağlantı sağlanır. Sadece bir kullanıcı(SA) bu bağlantı şeklini kullanabilir. DAC oturumunda veritabanıyla ilgili her türlü işlemden ziyade daha çok yönetimsel işlemlerin yapılmasına izin verilir. Backup vb. işlemler yapılamamaktadır.
Sysadmin’ler için özel bir arka kapı da diyebiliriz. Database Engine bu bağlantı için küçük bir miktar memory ve özel bir scheduler rezerve ederek her zaman bu kapının erişilebilir olmasını mümkün kılar.
DAC default olarak 1434 portunu kullanır. Bu port bilgisini SQL Server başlangıcında Error Log’da görebilirsiniz. TCP\IP port yapılandırılmasının aktif edilmesi lazım.
Dac bağlantısını gerçekleştirdikten sonra sp_whoIsactive komutu çalıştırılabilir. Burada oluşan slepping veya bekleyen işlemler kill edilebilir. Bu şekilde system’in rahat edilmesi sağlanır. Sadece system adminler bu bağlantıyı kullanır.
Aşağıdaki kod parçacığını kullanarak uzaktan DAC erişimini kullanıma açılabiliriz. Aşağıdaki aktif etme işlemi sadece uzak masaüstü bağlantılarında geçerlidir.
EXEC sp_configure 'remote admin connections', 1
GO
RECONFIGURE
GO
Yukarıdaki komut şeklinde değil’de arayüz kısmındanda yapabiliriz. Bunun için instance’a sağ tıklayıp facet kısmına girip ilgili ayarları yaptığımızda aynı işlemlere sebep olunur.
1.ADIM

2.ADIM

Remote admin connections ayarını aktif ettikten sonra şimdi gelelim bağlanma ekranına. Bağlanmak için her zaman kullandığımız “Connect” butonuna değil de menüden “Database Engine Query” seçeneğine gidiyoruz.

Sunucu ismimiz ve instance adımızdan önce DAC bağlantısı olduğunu belirten admin veya ADMIN ifadelerinin eklenmesi gerekmektedir. Aşağıda yapılan işlem yukarıdaki connect bağlantısında önümüze gelen ekran.

Bu şekilde connect olmaya çalıştığımızda aşağıdaki şekilde hata aldığını desteklemediğini söylüyor.

Doğru olan yerden bağlanmaya çalıştığımızda bağlantı işleminin başarılı bir şekilde olduğunu görmüş olacağız.

New query’in sağında bulunan database query engine ekranına tıkladığımızda admin ile giriş yapmaya çalışıyoruz.

Bağlantı işlemimizin başarılı bir şekilde olduğunu görmüş olduk.

Girdikten sonra system seviyesinde bazı konfigürasyonları yapmış oluruz. Makalenin başında ikinci bir kullanıcının DAC ile giremediğini söylemiştik ikinci bir bağlantı yapmaya çalıştığımda aşağıdaki hatayı almış oldum.

Yukarıda yapmış olduğumuz sp_configure konfigürasyonuna gerek kalmadan SSMS arayüzündende bu işlemleri yapabiliriz. Aşağıdaki bölümde bu konuya değineceğim ve önemli bir detaya değinmiş olacağım. Önemli olan konu aynı sunucu üzeriysek DAC bağlantısını ister aktif edelim veya etmeyelim(sp_configure ile ya da arayüzden) DAC ile bağlanmak istersek otomatikmen bağlanmış olacağız. Bu açıklamaları örnekler üzerinden yapalım.
Birinci senaryo şu S1 sunucumda DAC disable durumda. Aşağıda bulunan resimdeki gibi.
1.ADIM

2.ADIM

Bu ayarlamaları sp_configure ‘remote admin connections’ dan da yapılabilir. Ben yukarıdaki facet üzerinden yapıyorum işlemlerimi. Yukarıdaki ayarlamayı yaptıktan sonra sp_configure’den kontrol edelim

En sağdaki değer run_value yani şuan DAC’ın pasif olduğunu gösteriyor ama sadece uzaktaki bağlantılarda(önemli) S1 sunucusu üzerinde ister pasif olsun ister aktif olsun run_value değeri sürekli DAC bağlantısını gerçekleştirir.(Yukarıda belirtmiştik)Run_value değeri 1 olursa farklı bir sunucudan(S2) DAC bağlantısı sağlanabilir. Kısacası 0 yerel bağlantı izni,1 ise yerel ve uzak bağlantı izni.
1.ADIM
RemoteDacEnabled değeri False ise(Yukarıdaki resimde bu değeri false yapmıştık)
Kırmızı çerçeveye bakarsınız S2 sunucumuzdan bağlandığımızı görmüş olacağız.

S2 sunucusundan DAC yaptığımda hata ile karşılaşmış olacağım.

Yukarıda bahsettiğim gibi sunucunun kendi üzerinde ister DAC açık olsun veya kapalı olsun bağlanır.


Şimdi ise S1 sunucusu üzerinde false yaptığımız DAC işlemini true yapalım ve aynı işlemleri teker teker deneyelim. Bu sefer komut ile bu işlemi deneyelim.
EXEC sp_configure 'remote admin connections', 1
GO
RECONFIGURE
GO
Farklı bir sunucudan (S2) DAC işlemi yapalım hata veriyor mu?

Bağlanmaya çalıştığımızda doğru bir şekilde bağlanmış olduk.

Özetlemiş olursak DAC bağlantısının aktif veya pasif edilmesi local’deki sunucuyu etkilemez. Sadece uzaktaki sunucuyu etkilemektedir.
Şimdi ise komut satırından sql server’a DAC bağlantısı ile giriş yapılabilir. Komutta bulunan A parametresi DAC ile bağlantıyı aktifleştirmektedir. 2 tür bağlanma şekli vardır.
SQL Authentication:
sqlcmd -S [ServerName] -U [loginname] -P [Password] –A
Windows Authentication:
sqlcmd –S [ServerName] –A

Yukarıda bağlanma şeklimiz ilk bölümde yaptığımız local’den yani DAC bağlantısı ister aktif olsun ister pasif olsun bağlanma şekli. Aşağıda yapacağım işlem ise DAC bağlantısı S1 sunucusunda pasif veya aktif olduğunda S2 sunucusunda bağlanıp bağlanmadığını kontrol etmek.
- 1. Adım DAC bağlantısı pasif(0) durumda iken gördüğümüz gibi bağlantı gerçekleşmedi.

- 2.Adım S1 sunucusunda DAC bağlantısını aktif(1) ettiğimizde bağlantının gerçekleşmiş olduğunu görmüş olacağız.

Not: SQL Express’te bu özelliği kullanabilmeniz için başlangıç parametrelerine -T7806 trace flag ekleyip DB Engine servisi restart etmeli ve servislerden SQL Browser’ın çalıştığına emin olmanız gerekmektedir.
Başka makalede görüşmek dileğiyle..
“Sen ancak Zikr’e (Kur’an’a) uyanı ve görmediği hâlde Rahmân’dan korkan kimseyi uyarırsın. İşte onu bir bağışlanma ve güzel bir mükâfatla müjdele.”Yasin-11
1 thought on “MSSQL Server’da Dedicated Admin Connection (DAC)”