DAC - Dedicated Administrator Connection
Funkcjonalność SQL Server od wersji 2005. Umożliwia nawiązanie sesji awaryjnej z serwerem przez użytkownika z uprawnieniami sysadmin w czasie, gdy serwer nie odpowiada na zwykłe próby nawiązania sesji. Połączenie to jest możliwe dzięki temu, że SQL Server ma specjalnego schedulera dedykowanego tylko do tego połączenia.
select
scheduler_id,
cpu_id,
status,
is_online,
is_idle,current_tasks_count,
current_workers_count
from sys.dm_os_schedulers
Polecenia wykonywane w czasie sesji DAC mogą wykorzystywać tylko jeden wątek (nie będzie równoległości)
Jak użyć
Z połączenia możemy skorzystać nawiązując tylko jedną sesję. Możemy to zrobić
1. Przez Management Studio - wybierając z menu polecenie File \ New \ Database Engine Query
i dopisując w ekranie uwierzytelniania opcję ADMIN: przed nazwą instancji
2. Przez SQLCMD - dodając opcję
-A do składni.
Składnia polecenia: SQLCMD -S [SQL Server Name] -U [User Name] -P [Password] -A
Problemy z podłączeniem
1. Nie może być wiele połączeń DAC w tym samym czasie. Jeśli będziemy chcieli nawiązać drugie połączenie, dostaniemy komunikat błędu:
2. Nie możemy połączyć się podczas uruchamiania SSMS - dozwolone są tylko pojedyncze sesje DAC
3. Możemy się połączyć jedynie przy użyciu połączenia RDP - nie można połączyć się zdalnie.
Wykorzystanie połączeń zdalnych wymaga zmiany konfiguracji SQL Servera.
Sprawdzenie bieżących sesji DAC
Korzystając z sys.endpoints oraz sys.dm_exec_endpoints możemy ustalić, czy i skąd nawiązane jest połączenie DAC:
select
dmes.session_id,
dmes.login_name,
dmes.login_time,
e.name as Endpoint_Name,
dmes.host_name
from sys.dm_exec_sessions dmes
join sys.endpoints e
on dmes.endpoint_id = e.endpoint_id
Włączenie możliwości połączeń zdalnych przy użyciu DAC
Sprawdzenie bieżących ustawień:
Use [master]
GO
sp_configure 'remote admin connections'
GO
Ustawienie:
Use [master]
GO
sp_configure 'remote admin connections', 1
GO
RECONFIGURE with OVERRIDE
GO
Można to też wykonać przy użyciu interfejsu graficznego w Management Studio:
Na poziomie instancji wyświetlamy "Facets", zmieniamy aspekt na "Surface Area Configuration" i ustawiamy opcję "RemoteDACEnabled" na "true".
Dodatkowo - konieczne jest odblokowanie portu w firewall'u (domyślnie to port 1434)
Dodatkowe informacje
1. Info o schedulerach
https://msdn.microsoft.com/en-us/library/ms177526.aspx