MSSQLSERVER_21879

Si applica a:SQL Server

Dettagli

Attributo Valore
Nome prodotto SQL Server
ID evento 21879
Origine evento MSSQLSERVER
Componente SQLEngine
Nome simbolico SQLErrorNum21879
Testo del messaggio Impossibile eseguire una query nel server reindirizzato '%s' per il server di pubblicazione originale '%s' e il server di pubblicazione '%s' per determinare il nome del server remoto; errore %d, messaggio di errore '%s.'

Spiegazione

sp_validate_redirected_publisher usa un server collegato temporaneo creato per connettersi al server di pubblicazione reindirizzato per individuare il nome del server remoto. L'errore 21879 viene restituito in caso di errore della query del server collegato. La chiamata per richiedere il nome del server remoto è in genere il primo utilizzo del server collegato temporaneo, pertanto, se ci sono problemi di connettività, è probabile che si presentino prima con questa chiamata. Questa chiamata remota esegue semplicemente @@servername nel server remoto.

Il server collegato usato per eseguire la query sul server di pubblicazione reindirizzato usa la modalità di sicurezza, l'account di accesso e la password forniti quando viene richiamato sp_adddistpublisher per il server di pubblicazione originale.

  • Se è stata usata l'autenticazione di SQL Server (modalità di sicurezza 0), l'account di accesso e la password specificati vengono usati per connettersi al server remoto.

  • Se è stata utilizzata l'autenticazione di Windows (modalità di sicurezza 1), viene utilizzata una connessione trusted per la connessione.

    • Se sp_validate_redirected_publisher viene chiamato in modo esplicito da un utente, l'account di accesso di Windows con cui è in esecuzione l'utente viene usato per la connessione.

    • Se viene chiamata la stored procedure sp_validate_redirected_publisher da un agente di replica da sp_get_redirected_publisher, viene usato l'account di accesso di Windows associato all'agente.

L'errore 21879 può indicare che sp_validate_redirected_publisher è stato chiamato usando un account di accesso non conosciuto sul server di pubblicazione di destinazione reindirizzato.

Azione utente

Assicurarsi che l'account di accesso di autenticazione di SQL Server o l'account di accesso all'autenticazione di Windows sia valido in tutte le repliche del gruppo di disponibilità e disponga di autorizzazioni sufficienti per accedere alle tabelle dei metadati della sottoscrizione (syssubscriptions e sysmergesubscriptions) nel database del server di pubblicazione.

È opportuno prendere alcune precauzioni quando l'errore 21879 viene restituito da una chiamata all'oggetto sp_get_redirected_publisher iniziato da un agente di replica in esecuzione su un nodo diverso dal database di distribuzione; ad esempio, un agente di merge in esecuzione su un Sottoscrittore. Se l'autenticazione di Windows viene usata per la connessione al server di pubblicazione reindirizzato, SQL Server deve essere configurato per l'autenticazione Kerberos affinché la connessione venga stabilita correttamente. Quando viene usata l'autenticazione di Windows e SQL Server non è configurato per l'autenticazione Kerberos, errore 18456 che indica che l'accesso "NT AUTHORITY\ANONYMOUS LOGON" non è riuscito, viene ricevuto da un agente di merge in esecuzione in un sottoscrittore. Vi sono tre possibili modi di risoluzione di questo problema:

  • Configurare SQL Server per l'autenticazione Kerberos. Vedere Autenticazione Kerberos e SQL Server nella documentazione online di SQL Server.

  • Usare sp_changedistpublisher per modificare la modalità di sicurezza associata al server di pubblicazione originale in MSdistpublishers, nonché per specificare un account di accesso e una password da usare per la connessione.

  • Specificare il parametro della riga di comando BypassPublisherValidation sulla riga di comando dell'agente di merge per ignorare la convalida quando sp_get_redirected_publisher viene chiamato sul database di distribuzione.