none
Linked Server - Login failed for user 'sa'. (Microsoft SQL Server, Fehler: 18456) RRS feed

  • Frage

  • Hallo Team,

    ich habe zwei MS SQL 2005 und versuche Linked Server einzurichen. Beide Server sind über einen VPN Tunnel verbunden.

    Wenn ich vom CZ Server eine Verbindung zum DE Server aufbaue funktioniert das ohne Probleme. Ich kann auch im Management Studio eine Verbindung zum DE Server hinzufügen und habe beide Server im Mangement Studio eingebunden.

    Hier mein Problem: In die andere Richtung geht es nicht. Wenn ich die Linked Server vom DE Server zum CZ Server aufbaue erhalte ich folgende Fehlermeldung:

    Login failed for user 'sa'. (Microsoft SQL Server, Fehler: 18456)

    der sa hat in DE und CZ das gleiche Kennwort. Wenn ich mich in CZ im Management Studio anmelde kann ich das Kennwort eintippen oder pasten - es funktioniert, nur eben über den DE Server nicht. Ich kann auch keine Verbindung im Management Studio zum CZ Server hinzufügen.

    Was ich schon geprüft habe ist: CZ Server läuft im Mixedmode, Browserdienst läuft und TCP/IP Protokoll ist für den MSSQLSERVER aktiviert. Firewall ist auf dem CZ Server deaktiviert.

    Hat jemand noch eine Idee was die Verbindung blockieren könnte?

    Ich freue mich auf jede Antwort

    Grüße Samuel

    Freitag, 21. März 2014 21:55

Antworten

  • Hallo Samuel,

    probier bitte vorab noch eins:

    Leg einen neuen SQL Server Benutzer auf dem CZ Server an, gib ihm ggfs. ebenfalls die Rolle sysadmin und verwende den mal für den Zugriff von DE aus. Wenn es mit dem auch nicht klappt, schau mal im SSMS -> Servername -> Eigenschaften -> Reiter "Verbindungen", ob "Remoteverbindungen mit diesem Server zulassen" aktiviert ist.

    Falls ja, schau bitte mal ins Ereignisprotokoll des CZ Servers, dort sollte sich der Fehler auch finden lassen, evtl. steht dort genaueres.

    Den ConnectionString bzw. den Servernamen im Verbindungsdialog würde ich mal mit <IpAdresse>,1433 angeben, wenn Du das nicht eh schon machst. Da Du die Fehlerdetails ja aber von der richtigen Instanz auf dem CZ Server hast (hoffe ich einfach mal^^) sollte es daran eigentlich nicht liegen.

    Theoretisch könnte es auch einer Firewall, ... liegen. Ich persönlich halte die Meldung bzw. den Status 7 allerdings für eindeutig. Egal, wo ich schaue; Fehler 18456 mit State 7 wird immer und ausschließlich als "Login disabled and wrong password" angegeben. Wenn das richtige Passwort für einen deaktivierten Benutzer gesendet wird, kommt Fehler 18470. Siehe dazu bspw.:

      http://sql-articles.com/articles/troubleshooting/troubleshooting-login-failed-error-18456/

    Da Du sagst, MixedMode wäre aktiviert: Habt ihr das gerade erst gemacht? Falls ja, habt ihr danach den SQL Server neugestartet?

    ---

    Ist einer der Server evtl. eine Express Edition?

    ---

    Wenn das alles nicht hilft, gehen mir leider die Ideen aus.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Samstag, 22. März 2014 11:29
    Moderator
  • Hallo Samuel,

    ich denke, genau daran wird es liegen.

    Zum einen musst Du dich, wenn Du auf eine spezifische Instanz verbinden willst, Servername\Instanzname (alternativ auch <IpAdresse>\Instanzname angeben.

    Es kann sein, dass, aus welchem Grund auch immer, die Verbindung immer auf die SQL Server Express Instanz geht.

    Falls es keine anderweitigen Probleme gibt, kannst Du für eine der Instanzen auch einen Alternativport angeben. Im SQL Server Konfigurationsmanager für das Protokoll TCP/IP dann für IPAll bspw. 1433,44444 angeben. Damit kannst Du die entsprechende Instanz dann auch per Servername\Instanzname,44444 erreichen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert ITSAM77 Sonntag, 23. März 2014 17:15
    Samstag, 22. März 2014 21:56
    Moderator

Alle Antworten

  • Hallo Samuel,

    da sollten sich noch Details zum Fehler finden lassen. Die bräuchten wir, denn die weiteren Fehlerangaben geben Hinweise auf die eigentliche Ursache. Siehe dazu auch:

      http://technet.microsoft.com/de-de/library/ms366351.aspx


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Freitag, 21. März 2014 21:59
    Moderator
  • Hallo Stefan,

    anbei die Infos:

    ===================================
    
    "Fehler bei der Testverbindung mit dem Verbindungsserver."
    
    ===================================
    
    Ausnahme beim Ausführen einer Transact-SQL-Anweisung oder eines Transact-SQL-Batches. (Microsoft.SqlServer.ConnectionInfo)
    
    ------------------------------
    Speicherort des Programms:
    
       bei Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType)
       bei Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteNonQuery(String cmd)
       bei Microsoft.SqlServer.Management.Smo.LinkedServer.TestConnection()
       bei Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.LinkedServerConnectionTest.Invoke()
    
    ===================================
    
    Login failed for user 'sa'. (.Net SqlClient Data Provider)
    
    ------------------------------
    Hilfe erhalten Sie durch Klicken auf: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.5000&EvtSrc=MSSQLServer&EvtID=18456&LinkId=20476
    
    ------------------------------
    Servername: SERVER08,1433
    Fehlernummer: 18456
    Schweregrad: 14
    Status: 1
    Zeilennummer: 1
    
    
    ------------------------------
    Speicherort des Programms:
    
       bei System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
       bei System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
       bei System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
       bei System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
       bei System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async)
       bei System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
       bei System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
       bei Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType)
    
    

    Gruß Samuel


    Freitag, 21. März 2014 22:05
  • Hallo Samuel,

    wie im Technet Beitrag zu lesen ist, musst Du den Fehler im SQL Server Protokoll des CZ Servers nachschauen. Denn:

    Zur Verbesserung der Sicherheit bleibt die Art des Authentifizierungsfehlers in der an den Client zurückgegebenen Fehlermeldung absichtlich verborgen. Im SQL Server-Fehlerprotokoll hingegen enthält ein entsprechender Fehler einen Fehlerzustand, der einem Authentifizierungsfehler zugeordnet werden kann.

    Schau dort bitte nochmal und poste die Infos dann hier.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Freitag, 21. März 2014 22:30
    Moderator
  • Hallo Stefan,

    vielen Dank für Deine Antwort.

    OK dort steht folgende Fehlermeldung:

    2014-03-22 08:03:50.17 Logon       Error: 18456, Severity: 14, State: 7.
    2014-03-22 08:03:50.17 Logon       Login failed for user 'sa'. [CLIENT: 192.168.0.8]

    Vielleicht fällt Dir noch was dazu ein. Vielen Dank.

    Gruß Samuel

    Samstag, 22. März 2014 07:06
  • Hallo Samuel,

    State: 7 sagt lt. dem oben verlinkten Technet Artikel:

    Der Anmeldename ist deaktiviert, und das Kennwort ist falsch.

    Du sagst zwar, dass Du dich lokal anmelden kannst, die Meldung ist aber eigentlich eindeutig, ich würde darauf tippen, dass der "sa" Account deaktiviert ist. In dem Zusammenhang könnte der Kommentar am Ende der Seite interessant sein:

    Wird SQL Server mithilfe des Windows-Authentifizierungsmodus installiert und später in SQL Server und den Windows-Authentifizierungsmodus geändert, wird der Anmeldename sa zunächst deaktiviert. Dadurch wird ein Fehler mit dem Status 7 ausgelöst: "Fehler bei der Anmeldung für den Benutzer 'sa'.".

    Schau da bitte mal nach.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 22. März 2014 09:40
    Moderator
  • Hallo Stefan,

    danke für die Antwort. Den sa haben wir aktiviert und das gleiche Kennwort wie im DE Server gegeben. Ich melde mich auch immer als sa am Management Studio mit sa an.

    Irgiendwie hat der sa von außerhalb kein Zugriff. Kann das auch an den Ports der beiden Firewalls liegen die die VPN Verbindung herstellen?

    Samstag, 22. März 2014 09:46
  • Hallo Samuel,

    probier bitte vorab noch eins:

    Leg einen neuen SQL Server Benutzer auf dem CZ Server an, gib ihm ggfs. ebenfalls die Rolle sysadmin und verwende den mal für den Zugriff von DE aus. Wenn es mit dem auch nicht klappt, schau mal im SSMS -> Servername -> Eigenschaften -> Reiter "Verbindungen", ob "Remoteverbindungen mit diesem Server zulassen" aktiviert ist.

    Falls ja, schau bitte mal ins Ereignisprotokoll des CZ Servers, dort sollte sich der Fehler auch finden lassen, evtl. steht dort genaueres.

    Den ConnectionString bzw. den Servernamen im Verbindungsdialog würde ich mal mit <IpAdresse>,1433 angeben, wenn Du das nicht eh schon machst. Da Du die Fehlerdetails ja aber von der richtigen Instanz auf dem CZ Server hast (hoffe ich einfach mal^^) sollte es daran eigentlich nicht liegen.

    Theoretisch könnte es auch einer Firewall, ... liegen. Ich persönlich halte die Meldung bzw. den Status 7 allerdings für eindeutig. Egal, wo ich schaue; Fehler 18456 mit State 7 wird immer und ausschließlich als "Login disabled and wrong password" angegeben. Wenn das richtige Passwort für einen deaktivierten Benutzer gesendet wird, kommt Fehler 18470. Siehe dazu bspw.:

      http://sql-articles.com/articles/troubleshooting/troubleshooting-login-failed-error-18456/

    Da Du sagst, MixedMode wäre aktiviert: Habt ihr das gerade erst gemacht? Falls ja, habt ihr danach den SQL Server neugestartet?

    ---

    Ist einer der Server evtl. eine Express Edition?

    ---

    Wenn das alles nicht hilft, gehen mir leider die Ideen aus.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Samstag, 22. März 2014 11:29
    Moderator
  • Hallo Stefan,

    vielen Dank für deine Geduld.

    Der Tipp mit dem SQL-Express ist hier richtig. Allerdings hat mein Kollege mir versichert, dass er eine vollwertige Instanz vom SQL 2005 (Dienst läuft als MSSQLSERVER) neben der Instanz vom SQL Express installiert hat. Wenn ich mich versuche bei der Instanz vom SQLExpress (<Instanz>\BKUPEXEC) mit sa anzumelden bekomme ich die gleiche Fehlermeldung. Jetzt habe ich in dieser Instanz den sa aktiviert und siehe da, ich bekomme eine Verbindung.

    Jetzt erst mal vielen Dank für Deine Hilfe den Fehler zu finden !!!

    Wenn ich in der <Instanz>\BKUPEXEC den sa wieder deaktiviere bekomme ich wieder keine Verbindung. Dann habe ich im DE Server einen Linkedserver mit Instanznamen erzeugt, aber gleiches Ergebnis.

    Wie schaffe ich es eine Linkedserver Verbindung zu der Basisinstanz MSSQLSERVER herzustellen?

    Vielen Dank im Voraus.

    Gruß Samuel

    Die LinkedServer habe ich so erstellt:

    EXEC sp_addlinkedserver   
    @server=N'MDAMasterDB', 
    @srvproduct=N'',
    @provider=N'SQLNCLI', 
    @datasrc=N'192.168.0.8';


    Edit:

    Eine Prüfung der IP-Einstellungen des Protokolls hat ergeben, dass alle bei MSSQLSERVEr deaktiviert sind. Aktivieren kann ich sie zwar, aber dann funktioniert mein Linkedserver nicht mehr, da der BKUPEXEC auch die gleiche IP-Adresse aktiviert hat. Kann das Problem daran liegen?

    • Bearbeitet ITSAM77 Samstag, 22. März 2014 15:05
    Samstag, 22. März 2014 14:35
  • Hallo Samuel,

    ich denke, genau daran wird es liegen.

    Zum einen musst Du dich, wenn Du auf eine spezifische Instanz verbinden willst, Servername\Instanzname (alternativ auch <IpAdresse>\Instanzname angeben.

    Es kann sein, dass, aus welchem Grund auch immer, die Verbindung immer auf die SQL Server Express Instanz geht.

    Falls es keine anderweitigen Probleme gibt, kannst Du für eine der Instanzen auch einen Alternativport angeben. Im SQL Server Konfigurationsmanager für das Protokoll TCP/IP dann für IPAll bspw. 1433,44444 angeben. Damit kannst Du die entsprechende Instanz dann auch per Servername\Instanzname,44444 erreichen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert ITSAM77 Sonntag, 23. März 2014 17:15
    Samstag, 22. März 2014 21:56
    Moderator
  • Ok, Stefan,

    danke für Deine Hilfe. Ich konnte mit Deinem Hinweis das Problem lösen,

    Ich habe einfach in der anderen Instanz den Port 1433 gelöscht und in meiner Instanz hinzugefügt. Dienste neu gestartet und schon geht es.

    Ich hoffe nur dass die andere Instanz noch läuft, sonst vergebe ich eben alternative Ports.

    Vielen Dank für Deine Hilfe

    Gruß Samuel

    Sonntag, 23. März 2014 17:15