Prova alcuni test di connettività di base.
- Verificare che 5022, 5023 e 5024 siano in ascolto.
- Verificare che il nome del server che si sta utilizzando sia corretto.
Dalla riga di comando:
netstat -an
Sul mio server, puoi vedere che 5022 è in ascolto.
Quindi assicurati di poterti connettere a quelle porte tramite telnet
telnet fully-qualified-server-name 5022
Come menzionato nella sezione Note della GUI delle proprietà di mirroring, appena sotto il campo testimone, i nomi dei server devono essere indirizzi tcp completi.
Dovresti vedere solo una schermata nera. In questo esempio ho scelto un nome che causerebbe un errore di connessione. Se vedi "Impossibile aprire la connessione", i server definiti come mirror, principal e testimone non sono raggiungibili o non stai usando il nome giusto.
Il client Telnet può essere aggiunto in Funzionalità in Windows 2008.
In Windows 2008, quando fai clic con il tasto destro su Computer, puoi vedere il nome completo del computer. Dovresti essere in grado di eseguire il ping anche dalla riga di comando. es: ping myservername
Aggiornare
Eseguire le seguenti query su ciascuna istanza di SQL Server e inserire i risultati nella domanda. Molti di questi suggerimenti per la risoluzione dei problemi provengono da: http://msdn.microsoft.com/en-us/library/ms189127.aspx
Mostra endpoint TCPC
SELECT type_desc, port FROM sys.tcp_endpoints;
Visualizza lo stato degli endpoint del mirroring
SELECT state_desc FROM sys.database_mirroring_endpoints;
Verificare che il RUOLO sia corretto
SELECT role FROM sys.database_mirroring_endpoints;
Visualizza le autorizzazioni per gli endpoint
SELECT EP.name, SP.STATE,
CONVERT(nvarchar(38), suser_name(SP.grantor_principal_id))
AS GRANTOR,
SP.TYPE AS PERMISSION,
CONVERT(nvarchar(46),suser_name(SP.grantee_principal_id))
AS GRANTEE
FROM sys.server_permissions SP , sys.endpoints EP
WHERE SP.major_id = EP.endpoint_id
ORDER BY Permission,grantor, grantee;
GO
L'accesso per l'account del servizio dall'altra istanza del server richiede l'autorizzazione CONNECT. Assicurarsi che l'accesso dall'altro server disponga dell'autorizzazione CONNECT. Per determinare chi dispone dell'autorizzazione CONNECT per un endpoint, su ciascuna istanza del server utilizzare la seguente istruzione Transact-SQL.
Esempio di output:
name STATE GRANTOR PERMISSION GRANTEE
TSQL Local Machine G sqladmin CO public
TSQL Named Pipes G sqladmin CO public
TSQL Default TCP G sqladmin CO public
TSQL Default VIA G sqladmin CO public
Mirroring G SERVERNAME\Grantor CO SERVERNAME\Grantee
Concessore è l'account a cui è stata assegnata l'autorizzazione di connessione (CO), Concessionario è l'account che dispone dell'autorizzazione di connessione
Dalla riga di comando, eseguire ipconfig /all
e annotare il nome host restituito.