sqlschool.gr logo

articles

Articles of SQLschool.gr Team

Understanding the Dedicated Administrator Connection - DAC

Antonios Chatzipavlis
Tuesday 26 August 2014

Κάθε SQL Server DBA έχει στην συλλογή του διάφορα εργαλεία για να κάνει την καλύτερα την ημερήσια δουλεία του. Ένα από αυτά είναι και τo Dedicated Administrator Connection (DAC). Πόσοι όμως ξέρουν τι είναι αυτό και πως πρέπει να χρησιμοποιείται;

Από τον SQL Server 2005 όταν πρωτοεμφανίστηκε η συγκεκριμένη δυνατότητα έχω δει να χρησιμοποιείται τις περισσότερες φορές λάθος. Αυτό κυρίως οφείλεται στο ότι δεν έχει γίνει πλήρως κατανοητό τι ακριβώς κάνει και ποιος είναι ο βασικός σκοπός που αυτή η δυνατότητα υπάρχει.

Για να πάρουμε λοιπόν τα πράγματα με την σειρά.

Ο Σκοπός του DAC

Υπάρχουν στιγμές, ειδικά σε συστήματα που δεν έχει γίνει σωστή διαστασιολόγιση απαιτήσεων και πόρων, όπου ο SQL Server κάποια στιγμή θα βρεθεί σε μια κατάσταση που να μην μπορεί άμεσα να ανταπεξέλθει στις απαιτήσεις των χρηστών. 

Αυτό πριν τον SQL Server 2005 σήμαινε ότι ο DBA δεν μπορούσε να συνδεθεί στον instance ώστε να εντοπίσει και να σκοτώσει το ή τα sessions που δημιουργούν το μεγαλύτερο πρόβλημα.

Πλέον από τον SQL Server 2005 και μετά δεν υπάρχει καθώς με το DAC δίνεται η δυνατότητα στο DBA να συνδεθεί στο instance να εντοπίσει την αιτία του κακού και να πράξει ανάλογα.

Το DAC λοιπόν είναι ένα special connection το οποίο πρέπει να χρησιμοποιείται όταν δεν μπορούμε σαν DBA να συνδεθούμε στον SQL Server instance.

Πως το ενεργοποιώ

Για να χρησιμοποιήσει κανείς το DAC θα πρέπει να το κάνει εφόσον είναι φυσικά συνδεδεμένος στον server που είναι εγκατεστημένο το SQL Server instance κάνοντας χρήση του SQLCMD utility και ορίζοντας το διακόπτη -Α.  Αυτό μάλιστα είναι και το ενδεδειγμένο καθώς το SQLCMD είναι command line utility και δεν έχει την επιβάρυνση σε πόρους που έχουν τα UI utilities.

Φυσικά μπορείς να γίνει χρήση του DAC και μέσω του SSMS. Αυτό μπορεί να γίνει ανοίγοντας ένα New Query και στο παράθυρο που ζητάει την σύνδεση να γράψω ADMIN:<instance name>.
Για να μπορέσει όμως αυτό να πραγματοποιηθεί με επιτυχία θα πρέπει να έχει ενεργοποιηθεί στο instance το Remote Admin Connections στα configuration options του συγκεκριμένου instance.

Μάλιστα το συγκεκριμένο options αρκετοί συνάδελφοι μεταξύ αυτών και εγώ συνιστούν να είναι ενεργοποιημένο καθώς υπάρχουν περιπτώσεις που όταν υπάρχει πρόβλημα δεν είναι δυνατόν να συνδεθώ στον server ούτε με remote desktop connection ούτε  φυσικά (αν βέβαια έχω πρόσβαση στο computer room).

Επίσης θα πρέπει στο σημείο αυτό να επισημανθεί ότι η χρήση του DAC μέσω του SSMS μπορεί να γίνει μόνο για ένα New Query και όχι στο πρώτο connection dialog που εμφανίζεται όταν εκτελούμε το SSMS και οποίος ουσιαστικά χρησιμοποιείται για το Object Explorer Window.

Τα χαρακτηριστικά του DAC

  1. Το DAC είναι ένα ειδικού σκοπού connection στον SQL Server με σκοπό την διάγνωση του προβλήματος και εφόσον είναι εφικτό την επίλυση αυτού.
  2. Δεν μπορώ να έχω ταυτόχρονα ενεργά περισσότερα από ένα DAC connections. Αν το επιχειρήσω θα πάρω μήνυμα λάθος και θα καταγραφεί στα logs.
  3. Μπορώ να ελέγχω αν υπάρχει ενεργό DAC connection στο instance με το παρακάτω query . Αν αυτό δεν επιστρέψει αποτέλεσμα δεν έχω ενεργό DAC  SELECT s.session_id  FROM sys.tcp_endpoints as e  INNER JOIN sys.dm_exec_sessions as s  ON e.endpoint_id = s.endpoint_id  WHERE e.name=N'Dedicated Admin Connection';
  4. To DAC εξ ορισμού είναι διαθέσιμο για τοπική χρήση. Για να μπορώ να το εκτελώ απομακρυσμένα θα πρέπει να ενεργοποιηθεί το Remote Admin Connection configuration option.
  5. To account με το οποίο θα επιχειρήσω σύνδεση DAC θα πρέπει να είναι στο sysadmin server role.
  6. Μέσω του DAC ουσιαστικά μπορώ να εκτελέσω ερωτήματα που κάνουν χρήση κάποιου DMV. Για παράδειγμα δεν μπορώ να εκτελέσω εργασίες backup/restore καθώς αυτά ανήκουν στα parallel queries τα οποία δεν επιτρέπονται μέσω DAC.
  7. Δεν είναι φρόνιμο να εκτελώ queries που είναι resource intensive.
  8. Όταν έχω ένα DAC connection τότε ένα ξεχωριστό και ειδικό thread δίνεται σε αυτό το οποίο έχει τον δικό του scheduler (μέχρι τον SQL Server 2008 το ID του scheduler αυτού είναι το 255, από τον SQL Server 2008 R2 και μετά είναι το 1048576) και αυτό το thread δεν μπορεί να τα σκοτώσουμε.
  9. Το DAC δεν έχει lazywriter thread. Αντί αυτού έχει τα δικά του I/O Completion Port, worker thread.
  10. Δεν είναι 100% σίγουρο ότι θα μπορέσετε να συνδεθείτε πάντα μέσω DAC καθώς και αυτό δεσμεύει μνήμη καθώς έχει το δικό του scheduler και η κατάσταση του server σε μνήμη είναι παραπάνω από τερματισμένη.
  11. Όταν μέσω DAC προσπαθούμε να προσπελάσουμε κάτι το οποίο είναι ήδη locked από κάποιο άλλο process δεν θα το διαβάσουμε. Για να γίνει αυτό θα πρέπει να σκοτώσουμε το process που έχει κάνει το lock.
  12. To DAC για να μπορέσει κάποιος να το χρησιμοποιήσει στην Express έκδοση του SQL Server 2012 θα πρέπει να ξεκινήσει τo instance με το trace flag 7806.

/*antonch*/

Antonios Chatzipavlis

Antonios Chatzipavlis

Antonios is a Data Solutions Consultant and Trainer. He has been working in IT since 1988. In his career, he has worked as senior developer, IT Manager, Solutions Architect and IT Consultant. Since 1995 he has been devoted on new technologies and software development tools, mainly by Microsoft, either by training company staff and colleagues or assisting them in design, development and implementation as a consultant or chief developer. He has focused in Databases and Data Science since 1995. He specialized in Microsoft SQL Server since version 6.0 in areas like SQL Server Internals, Database Design and Development, Business Intelligence and in 2010 he has started working with Azure Data Platform, NoSQL databases, Big Data Technologies and Machine Learning. He is an active member of many IT communities in Greece, answering colleagues' questions and writing articles in his web site. He is the owner of SQLschool.gr which is a community portal with a lot of information about Microsoft SQL Server. He has been a Microsoft Certified Trainer (MCT) since 2000. Microsoft honored him as MVP on Data Platform due to his activities in SQL Server since 2010. He holds a large number of Microsoft Certifications and Microsoft SQL Server Certifications since version 6.5.

Episode

First look: SQL Database in Microsoft Fabric

image

More Episodes...

Tip

What's New in SQL Server 2022 - Episodes

More Tips...

Become a member

If you want to receive updates from us become a member to our community.

Connect

Explore

Learn


sqlschool.gr © 2010-2024 All rights reserved

This site uses cookies for operational and analytics purposes only. By continuing to browse this site, you agree to their use.