MSSQL 2016: l'account non è definito come account di accesso remoto al server. La connessione al server non è riuscita

Microsoft.SQLServer.2016.Could_not_connect_to_server_because_it_is_not_defined_as_a_remote_login_at_the_server_1_5_Rule (Rule)

L'impostazione della sicurezza per l'esecuzione di chiamate di procedure remote (RPC) in un server remoto comporta l'impostazione di mapping di accesso nel server remoto ed eventualmente anche nel server locale che esegue un'istanza di Microsoft SQL Server. Il mapping è specifico di un determinato nome di server\istanza, in genere il nome NetBIOS per un'istanza predefinita e il nome NetBIOS seguito dal nome dell'istanza per un'istanza denominata. Se il mapping di accesso non esiste o il nome del server specificato nella stringa di connessione non corrisponde esattamente al nome indicato nella tabella sysremotelogins e se l'account guest non dispone di un mapping in sysremotelogins, verrà generato questo errore. Tale errore si verifica anche se il nome di accesso dell'utente remoto risulta vuoto o Null.

Knowledge Base article:

Riepilogo

L'impostazione della sicurezza per l'esecuzione di chiamate di procedure remote (RPC) in un server remoto comporta l'impostazione di mapping di accesso nel server remoto ed eventualmente anche nel server locale che esegue un'istanza di Microsoft SQL Server. Il mapping è specifico di un determinato nome di server\istanza, in genere il nome NetBIOS per un'istanza predefinita e il nome NetBIOS seguito dal nome dell'istanza per un'istanza denominata. Se il mapping di accesso non esiste o il nome del server specificato nella stringa di connessione non corrisponde esattamente al nome indicato nella tabella sysremotelogins e se l'account guest non dispone di un mapping in sysremotelogins, verrà generato questo errore. Tale errore si verifica anche se il nome di accesso dell'utente remoto risulta vuoto o Null.

Soluzioni

La replica usa definizioni dei server remoti per connettersi ai server di distribuzione, pubblicazione e sottoscrizione. Quando si attiva e configura la replica, si creano implicitamente server remoti e si aggiungono mapping di accesso per le relative istanze remote di SQL Server. Nelle stringhe delle connessioni di replica viene sempre specificato il nome NetBios per un'istanza predefinita e il nome NetBIOS seguito dal nome dell'istanza per un'istanza denominata. Pertanto, la replica non individua né usa i nomi di server remoti definiti per indirizzi IP o per nomi di dominio completi. Quando il tentativo di connessione di replica non è in grado di individuare il nome NetBIOS nella tabella sysremotelogins, verrà visualizzato il messaggio di errore riportato sopra.

La replica Microsoft SQL Server è supportata quando i server coinvolti sono registrati per nome (di rete) NetBIOS, ma non quando tali server sono registrati per indirizzo IP o nome di dominio completo. Per ulteriori informazioni sulle modalità di replica tra computer che eseguono SQL Server in domini non trusted o in Internet, vedere l'articolo 321822 della Microsoft Knowledge Base.

Nota Il supporto per i server remoti viene fornito esclusivamente per motivi di compatibilità con le versioni precedenti. Le nuove applicazioni che devono eseguire stored procedure in istanze remote di SQL Server devono invece utilizzare server collegati.

Se i server coinvolti nella query o usati nella replica sono stati rinominati o creati da un'immagine, assicurarsi che il nome (di rete) NetBIOS corrisponda alla parte relativa al computer della funzione @@NOMESERVER di SQL Server. In caso contrario, attenersi alla procedura riportata nell'argomento "Ridenominazione di un server" della documentazione online (aggiornata - SP3) per aggiornare il valore di @@NOMESERVER. Questa modifica richiede il riavvio dell'istanza di SQL Server. Per altre informazioni sulle cause dell'esito negativo dell'installazione della replica quando SQL Server 2000 viene distribuito tramite un'immagine disco, vedere l'articolo 818334 della Microsoft Knowledge Base.

Se questo errore si verifica durante la replica, controllare che i server di distribuzione, pubblicazione e sottoscrizione siano stati configurati usando il nome (di rete) NetBIOS e non l'indirizzo IP o il nome di dominio completo.

Parametri di cui è possibile eseguire l'override

Nome

Descrizione

Valore predefinito

Abilitato

Abilita o disabilita il flusso di lavoro.

Priorità

Definisce la priorità dell'avviso.

1

Gravità

Definisce la gravità dell'avviso.

1

Element properties:

TargetMicrosoft.SQLServer.2016.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID18483
Event Source$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL 2016: l'account non è definito come account di accesso remoto al server. La connessione al server non è riuscita
{0}
Event LogApplication
CommentMom2016ID='{9CF46B83-7BD2-49D5-A987-B24FCB6FD0D7}';MOM2016GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

ID Module Type TypeId RunAs 
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ DataSource Microsoft.Windows.EventProvider Default
GenerateAlert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.SQLServer.2016.Could_not_connect_to_server_because_it_is_not_defined_as_a_remote_login_at_the_server_1_5_Rule" Target="SQL2016Core!Microsoft.SQLServer.2016.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2016ID='{9CF46B83-7BD2-49D5-A987-B24FCB6FD0D7}';MOM2016GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="_F6DA1507_12AF_11D3_AB21_00A0C98620CE_" Comment="{F6DA1507-12AF-11D3-AB21-00A0C98620CE}" TypeID="Windows!Microsoft.Windows.EventProvider">
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>18483</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.2016.Could_not_connect_to_server_because_it_is_not_defined_as_a_remote_login_at_the_server_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>