none
keine Anmeldung als "sa" nach der Installation möglich RRS feed

  • Frage

  • Hallo Forum,
    ich installiere einen SQL Server 2005 SE 32-Bit auf einem Win Server 2008 R2 aus einen C#-Programm heraus.
    Ich verwende eine *.ini-Datei für die unattended-Installation. Die Installation läuft ohne Fehler ab. Nach der Installation und vor dem Service Pack (alles im C# Programm) versuche ich mit dem SQL-Server (frisch installiert) zu verbinden:
    string sqlconn = "";
                if(_InstallationData.IsDefaultSQLInstance)
                    sqlconn = "Server=" + _InstallationData.ServerName + ";";
                else
                    sqlconn = "Server=" + _InstallationData.ServerName + "\\" + _InstallationData.InstanzName + ";";
                sqlconn += "Database=master;user=sa;password=" + _InstallationData.SaPasswort + ";";
                SqlConnection con = new SqlConnection(sqlconn);
                string strSQL = "SELECT  @@VERSION, @@LANGUAGE, SERVERPROPERTY('collation'), SERVERPROPERTY('productversion'), ";
                strSQL += "SERVERPROPERTY('productlevel'), serverproperty('edition')";
    
    Die Verbindung schlägt fehl, die Meldung:

    "System.Data.SqlClient.SqlException: Login failed for user 'sa'.
       at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
       at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
       at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
       at System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
       at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)
       at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
       at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
       at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
       at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
       at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
       at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
       at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
       at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
       at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
       at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)"

    Das Passwort von sa (selbstverständlich in *.ini-Datei auch vorhanden): "rB0§z!§-o_SN!c" (ich
    habe auf irgendwelche unerlaubte Zeichen spekuliert, es ist aber nicht der Fall).

    Im SQL Server Configuration Manager sehe ich, dass sowohl der Server als auch der Server Agent gestartet sind.
    Auch eine Verbingung über Server Management Studio mit dem sa-account schlägt fehl: "Login failed for user sa. SQL Server Error: 18456".
    Wenn ich mich jetzt jetzt mit Windows-Authentification mit dem SQL-Server verbinde (und das geht) und das gleiche Passwort aus der *.ini-Datei für das sa-Account eintrage, dann kann ich mich mit der Server verbinden. Als ob das Passwort für sa während der Installation nicht eingetragen wäre? Das Problem habe ich nur auf einem Win Server 2008 64-Bit System, ich habe bereits mehrfach mit dem gleichen Programm die SQL-Server auf Win 2003-Systemen problemlos installiert.
    Was läuft das schief?
    Vielen Dank P.
    Mittwoch, 19. Oktober 2011 15:11

Antworten

  • Hi,
    Stefan F.: wie gesagt, verwende ich eine *.ini-Datei für die unattended-Installation und wenn man dort "SAPWD=ccddffttrr" einträgt wird automatisch der gemischte Anmeldemodus aktiviert.

    Nö. Siehe dazu auch:

      http://msdn.microsoft.com/en-us/library/ms144259.aspx

    Parameter: /SECURITYMODE (Optional)
    Gibt den Sicherheitsmodus für SQL Server an.
    Wenn dieser Parameter nicht angegeben wird, kann die Authentifizierung nur über Windows erfolgen.

    Ich glaube, auch wenn während einer "manuellen"-SQLInstallation nur Windowsauthentifizierung gewählt wird, wird man trotzdem nach dem Passwort von "sa" gefragt, soll heissen, unabhängig vom Anmeldemodus kann man sich immer als "sa" anmelden?

    Nö. Nur, wenn SQL Server Authentifizierung aktiviert ist. Do Django hat dir ja geschrieben, wo man das nachträglich einstellen kann. Beim Setup selbst kann man das über den o.g. Parameter machen.

     


    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 Purclot Sonntag, 23. Oktober 2011 12:42
    Mittwoch, 19. Oktober 2011 21:23
    Moderator

Alle Antworten

  • Test es mal mit einem einfachen Password, wie z.B. 0KIkVGJtKHbpFnu8y69i . Wenn das funktioniert, dann gibt es wohl ein Problem mit den Sonderzeichen. Diesbezüglich gilt aber auch, das du nicht wirklich mehr Entropie gewinnst :) sprich durch die Verwendung der Sonderzeichen wird dein Password nicht arg komplizierter.

    Wozu überhaupt mit sa arbeiten?

    Mittwoch, 19. Oktober 2011 15:27
    Moderator
  • Hi,

    kann es sein, dass Du nur die Windows Authentifizierung und nicht den "gemischten Modus" aktiviert hast?

     


    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
    Mittwoch, 19. Oktober 2011 15:36
    Moderator
  • Hi Purclot,

    hört sich für mich auch nach WinAuth only an.

    So muss es eingestellt sein, damit auch der SA und andere SQL-User rein kommen:

    Als lokaler Windows Admin kannst du dich anmelden mit dem SSMS und die Einstellung ändern.

     

    Viel Erfolg!


    "It's time to kick ass and chew bubble gum... and I'm all outta gum." - Duke Nukem
    Mittwoch, 19. Oktober 2011 15:53
  • Hallo,
    danke für Eure Antworten.
    1. Stefan H. : ich arbeite nicht als "sa". Das Programm macht eine komplette SQL-Installation + Service Pack+unterschiedliche Skripte+Abschlussarbeiten. Die Methode, mit der ich mich mit dem SQL-Server verbinde, wird innerhalb des Programms oft verwendet (z. B. für die Ausführung unterschiedlicher Skripte). Um Zugriffsrechte-Problemen aus dem Wege zu gehen, melde ich mich als "sa" an.
    2. Stefan F.: wie gesagt, verwende ich eine *.ini-Datei für die unattended-Installation und wenn man dort "SAPWD=ccddffttrr" einträgt wird automatisch der gemischte Anmeldemodus aktiviert. Ich glaube, auch wenn während einer "manuellen"-SQLInstallation nur Windowsauthentifizierung gewählt wird, wird man trotzdem nach dem Passwort von "sa" gefragt, soll heissen, unabhängig vom Anmeldemodus kann man sich immer als "sa" anmelden?
    3. Do Django: der Punkt 2 bezieht sich auf Deinen Vorschlag, abgesehen davon ist  der zwischenzeitliche manuelle Zugriff auf die Management-Konsole nicht vorgesehen, da ich alles komplett  aus dem C#-Programm heraus mache.
    4. das Programm funktioniert einwandfrei auf einem Win 2003 Server..

    Gruß
    P.

    • Bearbeitet Purclot Mittwoch, 19. Oktober 2011 18:17
    Mittwoch, 19. Oktober 2011 18:17
  • Hi Purclot,

    da Dein Programm bis zu diesem Fehler anscheinend fehlerfrei durchgelaufen ist, scheint ja der SQL Server installiert zu sein. Dann versuche doch mal dich von irgendeinem beliebigen Rechner mit installierten SSMS darauf zu verbinden, zur Not mit Winauth und überprüf mal die Einstellung.

    Ich weiß leider nicht, ob das Passwort der unattended Installation erzwungen wir, wenn es nicht den Passwortrichtlinien entspricht, aber das sollte ja in deinem Programm schon früher zu einer Fehlermeldung geführt haben, oder?

    Gruß


    "It's time to kick ass and chew bubble gum... and I'm all outta gum." - Duke Nukem
    Mittwoch, 19. Oktober 2011 20:41
  • Hi,
    Stefan F.: wie gesagt, verwende ich eine *.ini-Datei für die unattended-Installation und wenn man dort "SAPWD=ccddffttrr" einträgt wird automatisch der gemischte Anmeldemodus aktiviert.

    Nö. Siehe dazu auch:

      http://msdn.microsoft.com/en-us/library/ms144259.aspx

    Parameter: /SECURITYMODE (Optional)
    Gibt den Sicherheitsmodus für SQL Server an.
    Wenn dieser Parameter nicht angegeben wird, kann die Authentifizierung nur über Windows erfolgen.

    Ich glaube, auch wenn während einer "manuellen"-SQLInstallation nur Windowsauthentifizierung gewählt wird, wird man trotzdem nach dem Passwort von "sa" gefragt, soll heissen, unabhängig vom Anmeldemodus kann man sich immer als "sa" anmelden?

    Nö. Nur, wenn SQL Server Authentifizierung aktiviert ist. Do Django hat dir ja geschrieben, wo man das nachträglich einstellen kann. Beim Setup selbst kann man das über den o.g. Parameter machen.

     


    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 Purclot Sonntag, 23. Oktober 2011 12:42
    Mittwoch, 19. Oktober 2011 21:23
    Moderator
  • Hallo Stefan,

    mit dem Parameter "SAPWD" und "SECURITYMODE=SQL" hast du recht, danke für den Hinweis.

    Es hat auf dem Server (wahrscheinlich) nicht funktioniert, da ich sehr viele Testinstallationen (und Deinstallationen) durchgeführt habe, der Server war wahrscheinlich "verreckt". Ich habe den Server (Betriebssystem) erneut aufgesetzt und dann lief die Unattended-Installation (C#-Programm) problemlos ab.

    Gruß P.

    Sonntag, 23. Oktober 2011 12:48