01 Kasım 2009 Pazar

Dedicated Administrator Connection Portu

Merhaba arkadaşlar,


Her zaman başınıza gelebilecek birşey değiş, fakat geçenlerde benim başıma geldi ve açıkçası bu konuda bir kaynak bulmakta zorlandım. Hatta bulamadım, fakat biraz kurcalayınca çözümü kendim buldum.

Dedicated Administrator Connection (DAC) Portunun nereden ve neden değiştirilebileceği hiç aklınıza geldi mi? Geçenlerde yeni kurduğum bir SQL Server 2008 Instance' ının DAC' nin portunun standardizasyon ve Güvenlik Duvarı tarafındaki Kural tanımları için değiştirmem istendi.

İlk etapta aklıma birşey gelmedi, çünkü ne SQL Server Configuration Manager' da ne de başka bir arayüzde bu ayarla ilgili bir bölüm gördüğümü hatırlamamıştım. Tabii ki yapılabilecek en mantıklı şey olarak hemen Google' a sordum. Tam bir hayal kırıklığıydı, konu hakkında neredeyse hiçbir bilgiye ulaşamadım. Kim bilir, belki de ben yanlış kelimeleri arattım?

Neyse, daha fazla gevezelik etmeden çözümü ve konuyu açıklamaya başlayayım.

Öncelikle, her SQL Server 2005 ve üzeri Instance' ına, kurulum esnasında bir DAC portu atanır. SQL Server Instance' ınızın DAC portunu, SQL Error Log' unun başlangıcında aşağıdaki örnekte verilen satırdaki gibi görebilirsiniz:

SQL Error Log' dan örnek satır:
Dedicated admin connection support was established for listening locally on port 49486.
Server is listening on [ 127.0.0.1 49486].

DAC portunun değiştirilmesi gerektiği söylendiğinde aklıma birşeyin gelmemesi normalmiş. Çünkü gerçekten de aradım taradım ve bu ayarın nereden değiştirilebileceğini gösteren herhangi bir yazı, resim, arayüz vs. bulamadım.

Aklıma, bu tür ayarların Kayıt Defterinde (Registry) saklandığı geldi ve DAC' ye atanan portu Kayıt Defterinde arattım ve aşağıdaki anahtara ulaştım:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10.S08\MSSQLServer\SuperSocketNetLib\AdminConnection\Tcp

Eğer bu anahtarı elle değiştirirseniz ve SQL Server servisini durdurup tekrar başlatırsanız, yeni DAC portunuzun artık sizin atadığınız port olduğunu göreceksiniz. DAC portu, Dynamic bir port değildir. Bu nedenle her SQL Server servisinin kapanıp açılmasıyla değişmez. Hangi port belirtilmişse, hep o port kullanılmaya çalışılır.

"[Microsoft][ODBC SQL Server Driver]Unspecified error occured on SQL Server. Connection may have been terminated by the server. OS Error: 0"

HATA MESAJI:
"[Microsoft][ODBC SQL Server Driver]Unspecified error occured on SQL Server. Connection may have been terminated by the server. OS Error: 0"

AÇIKLAMA:
SQL Server' a bağlantı kurduktan hemen sonra veya birkaç dakika sonra bu hata mesajını alarak kopma sorunları yaşayabilirsiniz.

ÇÖZÜM:
Bu sorun, Windows Server 2003 ile ilgili bir sorundur. Sorunu çözmek için şu KB’ deki Fix’ i kullanabilirsiniz:

“http://support.microsoft.com/kb/948496”

"DROP DATABASE statement cannot be used inside a user transaction"

HATA MESAJI:
"DROP DATABASE statement cannot be used inside a user transaction"

AÇIKLAMA:
“DROP DATABASE” komutuyla bir veritabanını silmeye çalıştığınızda bu hata mesajını alabilirsiniz.

ÇÖZÜM:
Bu hata mesajını alıyorsanız, bu komutu çalıştırdığınız oturumdaki (Session) Transaction açık kalmıştır. ROLLBACK veya COMMIT komutlarını kullanarak bu Transaction’ ı sonlandırın veya başka bir oturum açın ve “DROP DATABASE” komutunu tekrar çalıştırın.

"Exclusive access could not be obtained because the database is in use."

HATA MESAJI:
"Exclusive access could not be obtained because the database is in use."

AÇIKLAMA:
Bu hatayı, işlem yapmak istediğiniz veritabanına başka bir işlem tarafından X (Exclusive) Lock konduğunda alırsınız. Buna bir örnek, Restore olan bir veritabanı olabilir... Bir veritabanı Restore oluyorken, Restore işlemini yapan SPID bu işlemi gerçekleştirmek adına bu veritabanı için X Lock alır.

ÇÖZÜM:
SQL Server 2005 ve daha üstü versiyonlarda "sys.dm_tran_locks" DMV' si ile hangi SPID' nin hangi veritabanı için ne çeşit bir Lock aldığını görebilirsiniz.

SQL Server 2000 için ise "sp_lock" sistem SP' sini kullanabilirsiniz.

"Dedicated administrator connections are not supported. (ObjectExplorer)"

HATA MESAJI:
"Dedicated administrator connections are not supported. (ObjectExplorer)"

AÇIKLAMA:
DAC (Dedicated Administrator Connection) özelliğini kullanarak SQL Server’ a bağlanmak için SSMS’ teki Object Explorer kullanıldığında böyle bir hata ile karşılaşılır.

ÇÖZÜM:
DAC kullanarak SQL Server’ a bağlantı kurmak için SQLCMD veya Query Editor kullanılmalıdır.