Database
 sql >> Database >  >> RDS >> Database

Utilizzo di istanze denominate? Metti alla prova la tua connessione DAC!

Giocando oggi, ho scoperto che non potevo connettermi alla mia istanza denominata locale utilizzando la connessione dell'amministratore dedicata (altrimenti nota come DAC, ma non quel DAC):

Impossibile connettersi a ADMIN:PLASKETT\SQL2012.

Si è verificato un errore relativo alla rete o specifico dell'istanza durante la creazione di una connessione a SQL Server. Il server non è stato trovato o non era accessibile. Verificare che il nome dell'istanza sia corretto e che SQL Server sia configurato per consentire connessioni remote. (provider:Interfacce di rete SQL, errore:43 – Si è verificato un errore durante l'ottenimento della porta DAC (Dedicata Administrator Connection). Assicurarsi che SQL Browser sia in esecuzione o controllare il registro degli errori per il numero di porta) (Microsoft SQL Server, Errore:-1)

Questo è locale, quindi ovviamente la seguente impostazione a livello di server per consentire le connessioni di amministrazione remota non ha effetto in questo scenario specifico:

EXEC sp_configure 'remote admin connections', 1;
GO
RECONFIGURE;
GO

Ho scoperto che potrei connettermi se abilitassi il flag di traccia 7806, anche se quel flag di traccia è pensato per SQL Server Express (come documentato qui). Ma sapevo che il problema doveva essere più profondo di questo:Microsoft non avrebbe potuto interrompere completamente questa funzionalità, giusto?

Si scopre che questo sintomo riguarda solo le istanze *denominate*. Ne stavo parlando con Jonathan Kehayias, che aveva un'istanza predefinita e poteva connettersi bene. Tuttavia non poteva connettersi se specificava esplicitamente il numero di porta, il che lo ha portato a scoprire che TCP/IP era disabilitato.

Sebbene ciò influisca sulle istanze denominate di Developer Edition, in particolare perché il protocollo TCP/IP è disabilitato per impostazione predefinita, esistono altri scenari in cui ciò può danneggiarti se hai istanze denominate e...

  • hai [accidentalmente] distribuito Developer Edition alla produzione (cattivo cattivo);
  • hai disabilitato TCP/IP su qualsiasi edizione; o,
  • il servizio SQL Server Browser non è in esecuzione.

Per risolvere il problema, assicurati che TCP/IP sia abilitato tramite Gestione configurazione SQL Server> Protocolli di rete per e assicurati che il servizio browser SQL Server sia in esecuzione. Sarà necessario riavviare SQL Server.

Ora, quando sarai in grado di connetterti tramite il DAC, se provi a connetterti all'interno di Management Studio, visualizzerai questo messaggio di errore:

Questo messaggio di errore è benigno (e credo provenga dalla connessione IntelliSense in background). Puoi vedere dalla barra di stato che sei connesso e puoi verificare che la tua connessione sia la connessione DAC ignorando questo messaggio di errore ed eseguendo una query.

In ogni caso, confermare di essere in grado di connetterti tramite il DAC è un passaggio assolutamente essenziale nel tuo piano di ripristino di emergenza. Se non riesci a connetterti al DAC, dovresti pianificare una o entrambe le seguenti azioni durante la prossima finestra di manutenzione (o prima, se puoi permetterti un riavvio del servizio):

  • abilita TCP/IP
  • abilita il flag di traccia 7806

In entrambi i casi, assicurarsi che il servizio browser di SQL Server sia in esecuzione. Assicurati inoltre che l'impostazione del server per abilitare le connessioni remote sia abilitata, poiché non sai mai dove potresti trovarti quando devi accedere a un server che non risponde.

Kendra Little ha scritto un ottimo post sul blog sul DAC l'anno scorso. È divertente rovistare e vedere cosa puoi fare con il DAC, ed è davvero bello sapere che è lì, ma è anche importante sapere come potrebbe non essere in grado di aiutarti in caso di reali difficoltà del server.