Πώς συνδέομαι στον SQL Server όταν δεν μπορώ να συνδεθώ με άλλον τρόπο (DAC, lost password, missing sysadmin)

Πώς συνδέομαι στον SQL Server όταν δεν μπορώ να συνδεθώ με άλλον τρόπο (DAC, lost password, missing sysadmin)
Πώς συνδέομαι στον SQL Server όταν δεν μπορώ να συνδεθώ με άλλον τρόπο (DAC, lost password, missing sysadmin)

Κάποιες φορές θα μας τύχει να μην μπορούμε να συνδεθούμε στο SQL Server Instance ούτε ακόμα και σαν sysadmin χρήστης, είτε λόγο προβλήματος στο instance, είτε καθώς έχουμε ξεχάσει τον κωδικό του sysadmin χρήστη είτε δεν έχουμε / γνωρίζουμε sysadmin χρήστη .

Σαν λύση για το πρώτο η Microsoft από την έκδοση SQL Server 2008 και έπειτα προσφέρει το εργαλέιο DAC (Diagnostic Connection for Database Administrators). Αυτό μας επιτρέπει να συνδεθούμε σχεδόν κάθε φορά στο instance ακόμα και στις πιο ακραίες συνθήκες.

Σαν λύση για το δεύτερο και το τρίτο θα δούμε πώς συνδεόμαστε σε Single User mode χωρίς να έχουμε χρήστη στο SQL Server instance.

Πότε μας είναι χρήσιμο το DAC

Το χρησιμοποιούμε όταν δεν έχουμε πρόσβαση στη βάση με κάνεναν λογαριασμό είτε με SQL Authentication είτε Windows Authentication. Επίσης κάποιες πολύ εξειδικευμένες εργασίες επιτρέπονται από τον SQL Server μόνο αν είμαστε συνδεδεμένοι μέσω DAC.

Τι περιορισμούς έχουμε με το DAC

Με τη χρήση του πρέπει να θυμόμαστε ότι έχουμε το εξείς περιορισμούς:

  • Μπορεί να συνθεθεί μόνο χρήστης sysadmin και μάλιστα μόνο ένας ταυτόχρονα.
  • Δεν εκτελούνται οι ενέργειες με παραλληλία.
  • Τα queries μέσω DAC εκτελούνται με περιορισμένα resources.

Πώς το ενεργοποιούμε το DAC και για απομακρυσμένη πρόσβαση

Μπορούμε να συνδεθούμε και απομακρυσμένα από άλλον υπολογιστή αρκεί να έχουμε πρόσβαση στη πόρτα 1434 που χρησιμοποιεί και να είναι ενεργοποιημένη η παράμετρος remote admin connections:

exec sp_configure 'remote admin connections', 1;
go
reconfigure
go

Πώς συνδεόμαστε μέσω SQLCMD στο DAC

Το μόνο διαφορετικό που έχουμε να κάνουμε σε σχέση με ένα κανονικό connection είναι να προσθέσουμε την παράμετρο -A. Ο λογαριασμός που θα συνδεθούμε πρέπει να είναι sysadmin:

sqlcmd /S SMATZOURANISLP\SQL19 /d db_test -Usqladmin -Ppassword -A
Πώς συνδέομαι στον SQL Server όταν δεν μπορώ να συνδεθώ με άλλον τρόπο (DAC, lost password, missing sysadmin)
01

Πώς συνδεόμαστε μέσω SSMS στο DAC

Για να συνδεθούμε μέσω SQL Server Management Studio (SSMS) το μόνο που έχουμε να κάνουμε είναι να προσθέσουμε μπροστά από το servername το κείμενο admin: :

Πώς συνδέομαι στον SQL Server όταν δεν μπορώ να συνδεθώ με άλλον τρόπο (DAC, lost password, missing sysadmin)
02

Αν μας εμφανίσει αυτό το κείμενο σημαίνει ότι προσπαθήσαμε να συνδεθούμε από object explorer:

Πώς συνδέομαι στον SQL Server όταν δεν μπορώ να συνδεθώ με άλλον τρόπο (DAC, lost password, missing sysadmin)
03

Για να συνθεδούμε χωρίς αυτό το μύνημα λάθους πρέπει να συνδεθούμε από File NewDatabase Engine Query:

Πώς συνδέομαι στον SQL Server όταν δεν μπορώ να συνδεθώ με άλλον τρόπο (DAC, lost password, missing sysadmin)
04

Πώς βλέπουμε αν υπάρχει χρήστης συνδεδεμένος με DAC

Για να βρούμε εύκολα ποιος χρήστης είναι συνδεδεμένος μέσω DAC και δεν μας επιτρέπεται να μπούμε, τρέχουμε το κάτωθι query:

select t.name,ec.* from sys.dm_exec_connections ec
inner join sys.tcp_endpoints t on ec.endpoint_id=t.endpoint_id
where t.name='Dedicated Admin Connection';
Πώς συνδέομαι στον SQL Server όταν δεν μπορώ να συνδεθώ με άλλον τρόπο (DAC, lost password, missing sysadmin)
05

Δεν μπορώ ακόμα να συνδεθώ, τι να δοκιμάσω;

Σε περίπτωσουμε που ακόμα και με DAC δεν μπορούμε να συνδεθούμε, μπορούμε να δοκιμάσουμε να ξεκινήσουμε το SQL Server Service σε Minimal Configuration Single User Mode.

Σε αυτή την λειτουργία ο SQL Server δεν δημιουργεί την tempdb, η απομακρισμένη πρόσβαση δεν επιτρέπεται, μπορεί να συνδεθεί ταυτόχρονα μόνο ένας χρήστης και ενεργοποιούνται μόνο οι απαραίτητες διαδικασίες.

Το μόνο που έχουμε να κάνουμε είναι να πάμε στον SQL Server Configuration Manager, να κάνουμε δεξί κλικ Properties στο SQL Server Service και στην καρτέλα Startup Parameters να προσθέσουμε την παράμετρο -f (δεν ξεχνάμε να την αφαιρέσουμε και να κάνουμε επανεκκίνηση το service όταν λύσουμε το πρόβλημα). Αφού ολοκληρώσουμε την διαδικασία απαιτείται restart του SQL Server Service.

Πώς συνδέομαι στον SQL Server όταν δεν μπορώ να συνδεθώ με άλλον τρόπο (DAC, lost password, missing sysadmin)
06

Όταν ολοκληρωθεί το restart δοκιμάζουμε να συνδεθούμε είτε με sqlcmd είτε με SQL Server Management Studio.

Στην περίπτωση όμως που πάλι δεν μπορέσουμε να συνδεθούμε με το παρακάτω σφάλμα:

Login Failed for user A. Reason: Server is in single user mode. Only one administrator can connect at this time (Microsoft SQL Server, Error: 18461)

Σημαίνει ότι με το που ξεκινάει το instance συνδέεται κάποιος άλλος χρήστης οπότε σε αυτή την περίπτωση ξεκινάμε από Command Prompt το instance σε Single User Mode χωρίς minimal configuration -m με επιλογή να μπορείς να συνδέεσαι μόνο μέσα από sqlcmd:

net stop MSSQLSERVER
net start MSSQLSERVER /mSQLCMD

και μπορούμε να συνδεθούμε:

sqlcmd /S MSSQLSERVER -Usqladmin -Ppassword

Σε περίπτωση που έχουμε ξεχάσει τον κωδικό των SQL Logins με sysadmin και δεν έχουμε / γνωρίζουμε Windows Logins με sysadmin

Σε Single User Mode όλοι οι χρήστες που είναι local admins στον server παίρνουν τον ρόλο του sysadmin και μπορούν να συνδεθούν στο SQL Server Instance, οπότε μπορούμε να συνδεθούμε με το παρακάτω (με την προϋπόθεση ότι έχουμε εκκινήσει το instance με /mSQLCMD που είδαμε στο προηγούμενο βήμα) :

sqlcmd -S MSSQLSERVER -E

Σε περίπτωση που έχουμε ένα default instance συνδεόμαστε και με το παρακάτω χωρίς να δηλώσουμε instance:

sqlcmd -S. -E

Έπειτα αναλόγος την περίπτωση, μπορούμε είτε να αλλάξουμε credentials σε έναν χρήστη είτε να φτιάξουμε έναν καινούργιο και να του δώσουμε τον ρόλο του sysadmin:

create login dba with password ='123Pa#123';
alter server role sysadmin add member dba;
go

Όταν ολοκληρώσουμε την διαδικασία μπορούμε να κάνουμε απενεκκίνηση το SQL Server instance σε κανονική λειτουργία:

net stop MSSQLSERVER
net start MSSQLSERVER

Πηγές:

Μοιράσου το

Αφήστε μία απάντηση