Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Yönetilen Örneği
SQL Server, sunucuya standart bağlantılar mümkün olmadığında yöneticiler için özel bir tanılama bağlantısı sağlar. Bu tanılama bağlantısı, sql server standart bağlantı isteklerine yanıt vermediğinde bile bir yöneticinin tanılama sorguları yürütmek ve sorunları gidermek için SQL Server'a erişmesine olanak tanır.
Bu ayrılmış yönetici bağlantısı (DAC), SQL Server'ın şifrelemesini ve diğer güvenlik özelliklerini destekler. DAC yalnızca kullanıcı bağlamını başka bir yönetici kullanıcı olarak değiştirmeye izin verir.
SQL Server, DAC'nin başarıyla bağlanmasını sağlamak için her girişimi yapar, ancak aşırı durumlarda başarılı olmayabilir.
DAC ile bağlanma
Varsayılan olarak, bağlantıya yalnızca sunucuda çalışan bir istemciden izin verilir. Ağ bağlantılarına, remote admin connections sunucu yapılandırma seçeneği kullanılarak sp_configure saklı yordamıyla yapılandırılmadıkları sürece izin verilmez.
DAC kullanarak yalnızca SQL Server sysadmin rolünün üyeleri bağlanabilir.
DAC, özel bir yönetici anahtarı (-A) kullanılarak sqlcmd komut istemi yardımcı programı aracılığıyla kullanılabilir ve desteklenmektedir.
sqlcmd kullanımı hakkında daha fazla bilgi için bkz. sqlcmd - Betik değişkenleriyle kullanım. Ayrıca, ön ekini admin: biçiminde örnek adına sqlcmd -S admin:<instance_name>bağlayabilirsiniz. Ayrıca, SQL Server Management Studio Sorgu Düzenleyicisi'nden admin:<instance_name> öğesine bağlanarak bir DAC başlatabilirsiniz.
SQL Server Management Studio'dan bir DAC oluşturmak için:
Nesne Gezgini ve tüm açık sorgu pencereleri dahil olmak üzere ilgili SQL Server örneğine yönelik tüm bağlantıların bağlantısını kesin.
Menüden Dosya > Yeni > Veritabanı Altyapısı Sorgusu seçin
Bağlantı iletişim kutusundaki Sunucu Adı alanına, varsayılan örneği kullanıyorsanız
admin:<server_name>, adlandırılmış bir örnek kullanıyorsanızadmin:<server_name>\<instance_name>girin.
DAC bağlantı noktası
SQL Server, varsa TCP bağlantı noktası 1434 veya Veritabanı Altyapısı başlatıldığında dinamik olarak atanmış bir TCP bağlantı noktası üzerinde DAC'yi dinler. Hata günlüğü, DAC'nin dinlediği bağlantı noktası numarasını içerir. Varsayılan olarak DAC dinleyicisi yalnızca yerel bağlantı noktasında bağlantıyı kabul eder. Uzaktan yönetim bağlantılarını etkinleştiren bir kod örneği için bkz . Sunucu yapılandırması: uzak yönetici bağlantıları.
Uzaktan yönetim bağlantısı yapılandırıldıktan sonra, DAC dinleyicisi SQL Server yeniden başlatılmadan etkinleştirilir ve bir istemci artık DAC'ye uzaktan bağlanabilir. ÖNCE DAC'yi yerel olarak kullanarak SQL Server'a bağlanıp ardından uzak bağlantılardan gelen bağlantıyı kabul etmek için saklı yordamı yürüterek SQL Server yanıt vermese bile DAC dinleyicisinin sp_configure bağlantıları uzaktan kabul etmesi için etkinleştirebilirsiniz.
Küme yapılandırmalarında DAC varsayılan olarak kapalı olur. Kullanıcılar, DAC dinleyicisinin uzak bağlantıya erişebilmesini sağlamak için sp_configure öğesinin uzak yönetici bağlantısı seçeneğini kullanabilir. SQL Server yanıt vermiyorsa ve DAC dinleyicisi etkin değilse, DAC'ye bağlanmak için SQL Server'ı yeniden başlatmanız gerekebilir. Bu nedenle, kümelenmiş sistemlerde uzak yönetici bağlantıları yapılandırma seçeneğini etkinleştirmenizi öneririz.
DAC bağlantı noktası, başlatma sırasında SQL Server tarafından dinamik olarak atanır. Varsayılan örneğe bağlanırken DAC, bağlanırken SQL Server Tarayıcı Hizmeti'ne SQL Server Çözümleme Protokolü (SSRP) isteği kullanmaktan kaçınıyor. İlk olarak 1434 numaralı TCP bağlantı noktası üzerinden bağlanır. Bu başarısız olursa, bağlantı noktasını almak için bir SSRP çağrısı yapar. SQL Server Tarayıcısı SSRP isteklerini dinlemiyorsa, bağlantı isteği bir hata döndürür. DAC'nin dinlediği bağlantı noktası numarasını bulmak için hata günlüğüne bakın. SQL Server uzaktan yönetim bağlantılarını kabul etmek üzere yapılandırılmışsa, DAC'nin açık bir bağlantı noktası numarasıyla başlatılması gerekir:
sqlcmd -S tcp:<server>,<port>
SQL Server hata günlüğü, DAC için varsayılan olarak 1434 olan bağlantı noktası numarasını listeler. SQL Server yalnızca yerel DAC bağlantılarını kabul etmek üzere yapılandırılmışsa, aşağıdaki komutu kullanarak geri döngü bağdaştırıcısını kullanarak bağlanın:
sqlcmd -S 127.0.0.1,1434
Sınırlamalar
DAC yalnızca nadir durumlarda sunucu sorunlarını tanılamak için mevcut olduğundan, bağlantıda bazı kısıtlamalar vardır:
Bağlantı için kullanılabilir kaynaklar olduğundan emin olmak için SQL Server örneği başına yalnızca bir DAC'ye izin verilir. Bir DAC bağlantısı zaten etkinse, DAC üzerinden bağlanmaya ilişkin yeni istek 17810 hatasıyla reddedilir.
Kaynakları korumak için SQL Server Express, izleme bayrağı 7806 ile başlatılmadığı sürece DAC bağlantı noktasını dinlemez.
DAC başlangıçta oturum açma bilgileriyle ilişkilendirilmiş varsayılan veritabanına bağlanmayı dener. Başarıyla bağlandıktan sonra veritabanına bağlanabilirsiniz
master. Varsayılan veritabanı çevrimdışıysa veya başka bir şekilde kullanılamıyorsa, bağlantı 4060 hatasını döndürür. Ancak, aşağıdaki komutu kullanarak varsayılan veritabanını geçersiz kılıp bunun yerinemasterveritabanına bağlanırsanız işlem başarılı olur:sqlcmd -A -d masterVeritabanı Altyapısı örneği başlatıldığında
masterkullanılabilir olacağı garanti edildiğinden,masterveritabanı öğesine DAC ile bağlanmanızı öneririz.SQL Server, DAC ile paralel sorguların veya komutların çalıştırılmasını yasaklar. Örneğin, DAC ile aşağıdaki deyimlerden birini yürütürseniz 3637 hatası oluşturulur:
RESTORE...BACKUP...
DAC ile yalnızca sınırlı kaynakların kullanılabilir olması garanti edilir. Çok kaynak tüketen veya diğer sorguları engelleyebilecek sorguları çalıştırmak için DAC kullanmayın. Bu, DAC'nin mevcut sunucu sorunlarını daha da kötüleştirmesini önlemeye yardımcı olur. Olası bloklama senaryolarını önlemek için, bloklamaya yol açabilecek sorgular çalıştırmanız gerekiyorsa, mümkünse sorguyu anlık görüntü tabanlı yalıtım düzeylerinde çalıştırın; aksi takdirde işlem yalıtım düzeyini
READ UNCOMMITTEDolarak ayarlayın veLOCK_TIMEOUTdeğerini 2000 milisaniye gibi kısa bir değere ayarlayın ya da her ikisini birden yapın. Bu, DAC oturumunun engellenmesini engeller. Ancak, SQL Server'ın bulunduğu duruma bağlı olarak, DAC oturumu bir mandal üzerinde engellenebilir. CTRL-C kullanarak DAC oturumunu sonlandırabilirsiniz ancak bu garanti değildir. Bu durumda tek seçeneğiniz SQL Server'ı yeniden başlatmak olabilir.DAC ile bağlantıyı ve sorun gidermeyi garanti etmek için SQL Server, DAC'de çalıştırılacak komutları işlemek için sınırlı kaynaklar ayırır. Bu kaynaklar genellikle yalnızca aşağıda listelenenler gibi basit tanılama ve sorun giderme işlevleri için yeterlidir.
DAC üzerinde paralel olarak yürütülmesi gerekmeyen herhangi bir Transact-SQL deyimini teorik olarak çalıştırabilirsiniz, ancak kullanımı aşağıdaki tanılama ve sorun giderme komutlarına kısıtlamanızı kesinlikle öneririz:
Kilitleme durumunu görmek için sys.dm_tran_locks, önbelleklerin sağlığını denetlemek için sys.dm_os_memory_cache_counters ve etkin oturumlar ile istekler için sys.dm_exec_requests ve sys.dm_exec_sessions gibi dinamik yönetim görünümlerini temel tanılama amacıyla sorgulama. Yoğun kaynak kullanan (örneğin, sys.dm_tran_version_store tam sürüm depoyu tarar ve kapsamlı G/Ç'ye neden olabilir) veya karmaşık birleşimler kullanan dinamik yönetim görünümlerinden kaçının. Performans etkileri hakkında bilgi için, belirli dinamik yönetim görünümü belgelerine bakın.
Katalog görünümlerini sorgulama.
DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE, DBCC DROPCLEANBUFFERS ve DBCC SQLPERF gibi temel DBCC komutları. DBCC CHECKDB, DBCC DBREINDEX veya DBCC SHRINKDATABASE gibi yoğun kaynak kullanımlı komutlardan kaçının.
Transact-SQL
KILL <spid>komut. SQL Server'ın durumuna bağlı olarak,KILLkomut başarılı olmayabilir. Tek seçenek, SQL Server veya Azure SQL Yönetilen Örneği söz konusu olduğunda örneği yeniden başlatmak olabilir. Bazı genel yönergeler şunlardır:SELECT * FROM sys.dm_exec_sessions WHERE session_id = <spid>;sorgulanarak SPID'nin sonlandırıldığını doğrulayın. Hiç satır döndürmezse, oturumun sonlandırıldığı anlamına gelir.Oturum hala oradaysa sorgusunu
SELECT * FROM sys.dm_os_tasks WHERE session_id = <spid>;çalıştırarak bu oturuma atanmış görevler olup olmadığını doğrulayın. Görevi orada görüyorsanız, büyük olasılıkla oturumunuz şu anda sonlandırılıyordur. Bu önemli miktarda zaman alabilir ve hiç başarılı olmayabilir.Bu oturumla ilişkili
sys.dm_os_tasksiçinde hiçbir görev yoksa, ancakKILLkomutunu çalıştırdıktan sonra oturum hâlâsys.dm_exec_sessionsdurumunda kalıyorsa, bu kullanılabilir bir çalışanınız olmadığı anlamına gelir. Çalışmakta olan görevlerden birini (görünümdesys.dm_os_taskssessions_id <> NULLlistelenmiş bir görev) seçin ve çalışanı serbest bıraktırmak için onunla ilişkili oturumu kapatın. Tek bir oturumu sonlandırmak yeterli olmayabilir: Birden çok oturumu öldürmeniz gerekebilir.
Azure SQL Veritabanı'nda sınırlama
Azure SQL Veritabanı'ndaki DAC genellikle bir arka uç işlemi tarafından kullanılır ve kullanıcı tarafından erişilebilir değildir.
Azure SQL Yönetilen Örneği'nde sınırlama
DAC, Azure SQL Yönetilen Örneği için özel bir uç nokta üzerinde çalışmaz. SQL yönetilen örneklerinde DAC, 1434 numaralı bağlantı noktasını dinler. SQL yönetilen örneklerine olan özel uç noktalar yalnızca 1433 numaralı bağlantı noktası üzerinden bağlantılara izin verdiğinden, DAC bağlantısı kurmak için özel uç nokta kullanamazsınız. DAC'ye bağlanmak için SQL yönetilen örneğiyle aynı sanal ağda olmanız gerekir.
Örnekler
Bu örnekte, bir yönetici sunucunun contoso-server yanıt vermediğini fark eder ve sorunu tanılamak ister. Bunu yapmak için kullanıcı sqlcmd komut istemi yardımcı programını açar ve DAC'yi belirtmek için -A kullanarak contoso-server sunucusuna bağlanır.
sqlcmd -S contoso-server -U sa -P <password> -A
Yönetici artık sorunu tanılamak ve yanıt vermeyen oturumları sonlandırmak için sorgu yürütebilir.
İlgili içerik
- sqlcmd'yi komut dosyası değişkenleriyle kullanma
- sqlcmd yardımcı programı
- SEÇ (Transact-SQL)
- sys.sp_who (Transact-SQL)
- sys.sp_lock (Transact-SQL)
- KILL (Transact-SQL)
- DBCC CHECKALLOC (Transact-SQL)
- DBCC CHECKDB (Transact-SQL)
- DBCC OPENTRAN (Transact-SQL)
- DBCC INPUTBUFFER (Transact-SQL)
- Sunucu yapılandırma seçenekleri
- İşlemle İlgili Dinamik Yönetim Görünümleri ve İşlevleri (Transact-SQL)
- DBCC TRACEON (Transact-SQL) ile izleme bayrakları ayarlama