Za pomocą dedykowanego połączenia administracyjnego

SQL Server przewiduje specjalne połączenia diagnostycznego Administratorzy podczas standardowych połączeń z serwerem nie są możliwe.To połączenie diagnostyki umożliwia administratorowi dostępu SQL Server do wykonać diagnostyki kwerendy i rozwiązywanie problemów z nawet wtedy, gdy SQL Server nie odpowiada na żądania połączenia standardowego.

To dedykowanego połączenia administracyjnego (DAC) obsługuje szyfrowanie i inne funkcje zabezpieczeń SQL Server.DAC umożliwia tylko zmiana kontekst użytkownika do innego użytkownika admin.

SQL Server powoduje, że każda próba wykonania DAC podłączyć pomyślnie, ale w sytuacjach ekstremalnych może zakończyć się niepowodzeniem.

Łączenie z DAC

Domyślnie połączenie jest dozwolona tylko z klient uruchomionych na serwerze.Połączenia sieciowe nie są dozwolone, chyba że są skonfigurowane przy użyciu sp_configure procedura składowana z opcję połączenia zdalne administrowanie.

Only members of the SQL Server sysadmin role can connect using the DAC.

DAC jest dostępny i obsługiwanych przez polecenie sqlcmd przy użyciu przełącznika administratora specjalne narzędzie wiersza polecenia (-).Aby uzyskać więcej informacji o korzystaniu z polecenie sqlcmd, zobacz Polecenie sqlcmd przy użyciu skryptów zmiennych.Można również połączyć tworzenie prefiksu admin:do wystąpienie nazwy w formacie Polecenie sqlcmd sadmin:<wystąpienie_name>. Może również inicjować DAC z SQL Server Management Studio Edytor kwerend, łącząc się z admin:<nazwa_wystąpienia>.

Ograniczenia

Ponieważ istnieje DAC wyłącznie do diagnozowania problemów serwera w rzadkich okolicznościach, istnieją pewne ograniczenia dotyczące połączenia:

  • W celu zagwarantowania, że są zasoby połączenia, jest dozwolony tylko jeden DAC każdego wystąpienie SQL Server.Połączenie DAC jest już aktywny, wszelkie nowe żądanie połączenia przez DAC odmowa z powodu błędu 17810.

  • Aby oszczędzić zasoby, SQL Server Express nie nasłuchuje na porcie DAC, chyba że uruchomiono z flagą śledzenia 7806.

  • Początkowo DAC próbuje połączyć się z domyślna baza danych skojarzonych z logowania.Po pomyślnym połączenia można podłączyć do master bazy danych.Jeśli domyślna baza danych jest offline lub w inny sposób nie jest dostępna, połączenie zwróci błąd 4060.Jednak jego powiodą się, gdy zastępuje domyślna baza danych, aby połączyć master bazy danych, zamiast przy użyciu następującego polecenia:

    –d –A polecenie SQLCMD wzorca

    Zaleca się, że łączysz się z master bazy danych z DAC, ponieważ master zapewniona jest dostępny jeśli wystąpienie Aparat baz danych jest uruchomiona.

  • SQL Server zabrania uruchomione równolegle kwerendy lub polecenia z DAC.Na przykład, zostanie wygenerowany błąd 3637, jeśli użytkownik wykonać albo z DAC następujące instrukcje:

    • PRZYWRACANIE

    • KOPIA ZAPASOWA

  • Tylko ograniczone zasoby są gwarantowane dostępne z DAC.Do not use the DAC to run resource-intensive queries (for example.a complex join on large table) or queries that may block.Pomaga to zapobiegać DAC z compounding istniejące problemy z serwerem.Aby uniknąć potencjalnych blokowanie scenariuszy, jeśli uruchamianie kwerend, które mogą blok, uruchamiana kwerenda poziomów izolacji na podstawie migawka, jeśli jest to możliwe; w przeciwnym razie zestaw poziom izolacji transakcji, aby odczyt NIEPRZEKAZANY i zestaw LOCK_TIMEOUT wartość krótka wartość takich jak 2000 milisekund lub oba.Uniemożliwi sesja DAC uzyskiwanie zablokowane.Jednakże, w zależności od stanu, SQL Server jest w sesja DAC może pobrać zablokowane na zatrzaśnięcie.Można zakończyć sesja DAC za pomocą A-C, ale nie jest gwarantowane.W takim przypadek może być jedyną opcją ponownego SQL Server.

  • Zagwarantowanie łączność i rozwiązywania problemów z DAC, SQL Server rezerw ograniczonych zasobów do procesu polecenia uruchamiane na DAC.Zasoby te są zazwyczaj dostatecznie tylko dla prostych diagnostyczne i rozwiązywanie problemów z funkcji, takich jak wymienione poniżej.

Chociaż teoretycznie można uruchomić każdy Transact-SQL instrukcja , nie trzeba wykonywać równolegle na DAC, zdecydowanie zaleca się ograniczyć użycie następujących diagnostyczne i rozwiązywanie problemów z poleceń:

  • Badanie takie jak widoki dynamiczne zarządzanie podstawowe Diagnostics sys.dm_tran_locks stanu blokowania sys.dm_os_memory_cache_counters sprawdzać stan pamięci podręczne, i sys.dm_exec_requests i sys.dm_exec_sessions dla aktywnych sesji i żądań.Uniknąć widoki dynamiczne zarządzanie znacznych zasób (na przykład sys.dm_tran_version_store skanuje pełnej wersja magazynu i mogą powodować rozległe We/Wy) lub złożone sprzężeń.Informacje o wpływ na wydajność można znaleźć w dokumentacji dla szczególnych dynamiczny widok zarządzania.

  • Badanie widoki wykazu.

  • Podstawowe polecenia DBCC, takich jak DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE DBCC DROPCLEANBUFFERS, i DBCC SQLPERF.Nie uruchamiaj zasób-intensywnie polecenia, takie jak DBCC CHECKDB, DBCC DBREINDEX lub DBCC SHRINKDATABASE.

  • Transact-SQL KILL <spid> command.W zależności od stanu SQL Server, nie zawsze może się powieść polecenia UŚMIERCENIA; jedyną opcją może być ponowne uruchomienie SQL Server.Poniżej przedstawiono ogólne wskazówki:

    • Sprawdź, czy identyfikator SPID został faktycznie zabite przez badanie SELECT * FROM sys.dm_exec_sessions WHERE session_id = <spid>.Zwraca nie wierszy, oznacza, zostały zabite sesja.

    • Jeśli sesja jest nadal istnieje, sprawdź, czy są zadań przypisanych do tej sesji, uruchamiając kwerendę SELECT * FROM sys.dm_os_tasks WHERE session_id = <spid>.Jeśli zadanie jest widoczny, prawdopodobnie sesja jest jest obecnie zabite.Należy zauważyć, że może to zająć sporo czas i może się nie powieść wcale.

    • Jeśli nie ma żadnych zadań w sys.dm_os_tasks skojarzonego z tej sesji, ale sesja pozostaje w sys.dm_exec_sessions po wykonaniu polecenia "zabicia", oznacza to ma dostępne pracownik.Wybierz jedną z aktualnie uruchomionych zadań (zadań wymienionych w sys.dm_os_tasks widoku z sessions_id <> NULL) i kasowania sesja, skojarzone z nim Zwolnij pracownika.Należy zauważyć, że może nie być wystarczająco do pojedynczej sesja: należy zabić wielu z nich.

DAC Port

SQL Serverodbiera DAC na TCP, port 1434, jeśli są dostępne lub TCP port dynamicznie przypisywane po Aparat baz danych uruchamiania.Dziennik błędów zawiera numer portu nasłuchiwania DAC.Domyślnie DAC odbiornika akceptuje połączenie tylko portu lokalnego.Przykładowy kod, który uaktywnia połączenia administracji zdalnej, zobacz połączenia zdalne administrowanie, opcja.

Po skonfigurowaniu połączenia zdalne administrowanie DAC odbiornika jest włączona bez konieczności ponownego uruchomienia SQL Server i klient może teraz połączyć DAC zdalnie.Można włączyć odbiornik DAC do akceptowania połączeń zdalnie nawet jeśli SQL Server nie odpowiada przez pierwsze połączenie z SQL Server za pomocą DAC lokalnie, a następnie wykonywanie sp_configure procedura składowana akceptować połączenia z połączenia zdalnego.

W konfiguracjach klastrów DAC będzie wyłączone domyślnie.Użytkownicy mogą wykonać remote admin connection z opcją sp_configure włączyć odbiornik DAC do dostępu zdalnego połączenia.Jeśli SQL Server nie odpowiada i odbiornika DAC nie jest włączona, może być ponowne uruchomienie SQL Server z DAC.Dlatego zaleca się włączenie remote admin connections opcji konfiguracja w systemach klastrowanych.

Porty DAC są przypisywane dynamicznie przez SQL Server podczas uruchamiania.Podczas łączenia się z wystąpienie domyślne, pozwala uniknąć DAC, za pomocą SQL Server żądania protokołu rozpoznawania (SSRP) Usługi Przeglądarka SQL Server podczas nawiązywania połączenia.Pierwsze połączenie przez port 1434 protokołu TCP.W przypadku niepowodzenia powoduje wywołanie SSRP uzyskać portu.Jeśli SQL Server przeglądarki nie nasłuchuje żądań SSRP, żądanie połączenia zwraca błąd.Można znaleźć dziennik błędów i nasłuchuje DAC numeru portu.Jeśli SQL Server jest skonfigurowany do akceptowania połączeń administracji zdalnej, DAC muszą być inicjowane z numeru portu jawne:

sqlcmd–Stcp:<server>,<port>

SQL Server Numer portu dla DAC, który jest 1434 domyślnie wyświetla dziennik błędówJeśli SQL Server jest skonfigurowany do akceptowania lokalnych połączeń DAC, używając adapter sprzężenia zwrotnego, przy użyciu następującego polecenia:

sqlcmd–S127.0.0.1,1434

Przykład

W tym przykładzie administrator zauważa, że serwer URAN123 nie odpowiada i chce, aby zdiagnozować problem.Aby to zrobić, użytkownik uaktywnia sqlcmd wiersz polecenia narzędzie i łączy się z serwerem URAN123 za pomocą -A oznacza DAC.

sqlcmd -S URAN123 -U sa -P <xxx> –A

Administrator może teraz wykonać kwerendy w celu zdiagnozowania problemu i ewentualnie zakończyć sesje nie odpowiada.