Using a Dedicated Administrator Connection

SQL Server zawiera specjalne połączenia diagnostyczne dla administratorów podczas standardowych połączeń z serwerem nie jest możliwe.To połączenie diagnostyczne pozwala administratorowi na dostęp SQL Server Aby wykonywać kwerendy diagnostyczne i rozwiązywanie problemów z problemów nawet po SQL Server nie odpowiada na żądania połączenia standardowego.

To połączenie dedykowane administratora (DAC) obsługuje szyfrowanie i inne funkcje zabezpieczeń SQL Server. DAC umożliwia tylko zmiana kontekstu użytkownika do innego użytkownika Administrator.

SQL Server powoduje, że każda próba wykonania połączenia z pomyślnie, ale w sytuacjach skrajnych DAC może się niepowodzeniem.

Łączenie się z DAC

Domyślnie połączenie jest dozwolona tylko klient uruchomiono na serwerze.Połączenia sieciowe nie są dozwolone, jeśli nie są skonfigurowane przy użyciu procedura przechowywana sp_configure z opcja połączenia zdalnej administracji.

Tylko członkowie SQL Server roli sysadmin mogą łączyć się przy użyciu DAC.

DAC jest dostępny i obsługiwanych przez SQLCMD narzędzie wiersza polecenia przy użyciu przełącznika specjalne administratora (-A).Aby uzyskać więcej informacji o korzystaniu z SQLCMD, see Using sqlcmd with Scripting Variables. Istnieje też możliwość połączenia prefixing Administrator: do nazwy instancji w formacie SQLCMD -Sadmin:<instance_name>. Może również inicjować DAC z SQL Server Management Studio Edytor kwerend, łącząc się z Administrator:<instance_name >.

Ograniczenia

Ponieważ istnieje DAC wyłącznie do diagnozowania problemów z serwerem w sytuacjach szczególnych, istnieją pewne ograniczenia dotyczące połączenia:

  • W celu zagwarantowania, że są zasoby dostępne dla połączenia, jest dozwolony tylko jeden DAC każdego wystąpienie SQL Server. Jeśli połączenie DAC jest już aktywny, wszelkie nowe żądanie do łączenia się za pośrednictwem DAC zostało odrzucone z powodu błędu 17810.

  • Aby oszczędzić zasoby, SQL Server Express nie nasłuchiwać portu DAC, chyba, że uruchomiony przy użyciu flagi śledzenia 7806.

  • DAC początkowo będzie próbował podłączyć się do domyślna baza danych, skojarzony identyfikator logowania.Po pomyślnie połączenia, można połączyć wzorzec bazy danych.Jeśli domyślna baza danych jest w trybie offline lub w przeciwnym razie nie jest dostępny, połączenie będzie zwracać błąd 4060.Jednak to powiodą się, gdy zastępuje domyślna baza danych do łączenia się z wzorzec bazy danych w zamian za pomocą następującego polecenia:

    –d –A SQLCMD wzorzec

    Firma Microsoft zaleca, aby połączyć wzorzec bazy danych z DAC ponieważ wzorzec jest gwarantowane, jest dostępny jeśli wystąpienie Database Engine jest uruchomiona.

  • SQL Server nie pozwalają na systemie DAC równoległych kwerendy lub polecenia.Na przykład jeśli można wykonać jedną z następujących instrukcji z DAC zostanie wygenerowany błąd 3637:

    • PRZYWRACANIE

    • kopia zapasowa

  • Tylko ograniczonych zasobów są zagwarantowane mają być 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 zapobiec DAC compounding wszelkie istniejące problemy z serwerem.Aby uniknąć potencjalnych scenariuszy blokowania, jeśli zachodzi potrzeba uruchomienia kwerendy, które mogą blokować, uruchom kwerendę na podstawie migawka izolacji poziomów w miarę możliwości; w przeciwnym wypadku ustawiony poziom izolacji transakcji do odczytu NIEPRZYDZIELONYCH i ustawić wartość LOCK_TIMEOUT na krótką wartości, takiej jak na przykład 2000 milisekund lub jedno i drugie.Ta opcja będzie zapobiegać sesja DAC uzyskiwanie zablokowane.Niemniej jednak, w zależności od stanu, SQL Server to w sesja DAC może pobrać zablokowane na zatrzaśnięcie. Można zakończyć sesja DAC przy użyciu CNTRL-C, ale nie jest gwarantowane.W takim przypadek tylko opcję użytkownika może być ponowne uruchomienie SQL Server.

  • Aby zapewnić łączność i rozwiązywaniu problemów z DAC, SQL Server rezerwy wystarczającymi zasobami, aby przetwarzanie poleceń na DAC. Te zasoby są zazwyczaj dostatecznie tylko w przypadku prostych diagnostyczne i rozwiązywanie problemów z funkcji, takich jak te wymienione poniżej.

Chociaż teoretycznie można uruchomić żadnego Transact-SQL Instrukcja, która nie ma na celu wykonać równolegle na DAC stanowczo zaleca się ograniczyć użycie następujących diagnostyczne i rozwiązywanie problemów z poleceń:

  • Podczas badania dynamicznego zarządzania widoki podstawowe narzędzia diagnostyczne, takie jak sys.dm_tran_locks blokowania stanu sys.dm_os_memory_cache_counters, aby sprawdzić stan pamięci podręcznej oraz sys.dm_exec_requests sys.dm_exec_sessions dla aktywnych sesji i żądań.Należy unikać widoki dynamicznego zarządzania, które są zasób intensywne (na przykład sys.dm_tran_version_store skanuje magazynu wersja pełnej i może spowodować, że rozległe We/Wy) lub złączeniach złożonych.Aby uzyskać informacje na temat wpływ na wydajność Zobacz dokumentację dla konkretnych dynamiczny widok zarządzania.

  • Kwerenda wykazu widoków.

  • DBCC podstawowe polecenia, takich jak FREEPROCCACHE DBCC, FREESYSTEMCACHE DBCC DROPCLEANBUFFERS DBCC, i SQLPERF DBCC. Nie uruchamiaj poleceń obciąża, takich jak DBCC CHECKDB DBCC DBREINDEX i SHRINKDATABASE DBCC.

  • Transact-SQL KILL<spid> command.W zależności od stanu SQL Server, polecenia "zabicia" może nie powieść zawsze; następnie to jedyna opcja może być wymagane ponowne uruchomienie SQL Server. Poniżej przedstawiono ogólne wskazówki:

    • Sprawdź, czy numer SPID został rzeczywiście kasować przy użyciu kwerendy SELECT * FROM sys.dm_exec_sessions WHERE session_id = <spid>. Zwraca nie wierszy, oznacza, sesja została zabicia.

    • Jeśli sesja jest nadal istnieje, sprawdź, czy są zadania przydzielone do tej sesji, uruchamiając kwerendę SELECT * FROM sys.dm_os_tasks WHERE session_id = <spid>. Jeśli zadanie jest widoczny, prawdopodobnie sesja jest aktualnie jest kasować.Należy zauważyć, że to może potrwać znaczną ilość czas i może się nie powieść wcale.

    • Jeśli brak zadań w sys.dm_os_tasks, skojarzone z tą sesją, ale sesja pozostaje w sys.dm_exec_sessions po wykonaniu polecenia ZABICIA, oznacza to, są dostępne pracownika.Umożliwia wybranie jednego z aktualnie uruchomione zadania (zadania wymienione w widoku sys.dm_os_tasks z sessions_id <> NULL) i kasowania sesja skojarzonych z nią, aby zwolnić pracownika. Należy zauważyć, że nie są wystarczające do pojedynczej sesja: może zajść potrzeba niszczący wiele z nich.

DAC port

SQL Server nasłuchuje DAC na port TCP 1434, jeśli jest dostępna lub przypisywane dynamicznie na port TCP Database Engine uruchamianie. Dziennik błędów zawiera DAC nasłuchuje na numer portu.Domyślnie DAC odbiornika akceptuje połączenia lokalnego portu.Aby przykładowy kod, który uaktywnia połączenia administracji zdalnej Zobacz remote admin connections Option.

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

W konfiguracjach klastrów DAC będą wyłączone domyślnie.Użytkownicy mogą wykonywać możliwość połączenia zdalnej administracji sp_configure włączyć odbiornika DAC do dostępu zdalnego połączenia.Jeśli SQL Server nie odpowiada i odbiornik DAC nie jest włączona, może zajść potrzeba ponownego uruchomienia SQL Server Aby połączyć się z DAC. Dlatego zaleca się włączenie opcji konfiguracja połączeń administracji zdalnej w systemach klastrowanych.

DAC port jest przypisywany dynamicznie przez SQL Server podczas uruchamiania systemu. Podczas łączenia się z domyślnym wystąpienie, pozwala uniknąć DAC, za pomocą SQL Server Żądanie protokół (SSRP) rozdzielczość Usługa Przeglądarka SQL Server podczas nawiązywania połączenia.Najpierw łączy się przez port 1434 protokołu TCP.Jeśli się nie powiedzie, umożliwia wywołanie SSRP uzyskać portu.Jeśli SQL Server Przeglądarka nie nasłuchuje żądań SSRP, zwraca błąd, żądanie połączenia. Zajrzyj do dziennik błędów, aby znaleźć nasłuchuje DAC numeru portu.Jeśli SQL Server jest skonfigurowany do akceptowania połączeń administracji zdalnej, DAC muszą być inicjowane z numerem portu jawne:

sqlcmd–Stcp:<server>,<port>

The SQL Server dziennik błędów lists the port number for the DAC, which is 1434 by default. Jeśli SQL Server jest skonfigurowany do akceptowania lokalnych połączeń DAC, łączyć się przy użyciu karty sprzężenia zwrotnego, za pomocą polecenia:

sqlcmd–S127.0.0.1,1434

Przykład

W tym przykładzie administrator zauważa tego serwera URAN123 nie odpowiada i chce, aby zdiagnozować problem. Aby to zrobić, gdy użytkownik uaktywni sqlcmd polecenie prompt narzędzia i łączy się z serwerem URAN123 za pomocą -A Aby wskazać DAC.

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

Administrator może teraz wykonywać kwerendy w celu przeanalizowania problemu i ewentualnie kończenie sesji nie odpowiada.