locked
Connectionstring für SQL Server 2008 auf Web Server RRS feed

  • Frage

  • Hallo,

    lokal im Webserver aufgerufen funktioniert der nachfolgende Connectionstring bestens.
    (Es befindet sich Visual Studio 2010 auch auf dem Webserver)

    <add name="myConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\db1234567.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"providerName="System.Data.SqlClient" />
    
    

    Damit aber mehrere Instanzen der Datenbank von Usern im Internet aufgerufen werden können,
    habe ich den obigen Connectionstring durch:

    <add name="myConnectionString" connectionString="Data Source=.\\SQLExpress;Integrated Security=true; User Instance=true;AttachDBFilename=|DataDirectory|\db1234567.mdf; Initial Catalog=db1234567"/>
    
    

    ersetzt.

    Dieser funktioniert aber nicht und ich erhalte die Fehlermeldung "Server Error '/' Application" Instance failure. Was mache ich falsch?

    Grüße,

    Steffen

    Montag, 3. Mai 2010 20:16

Antworten

  • Hallo Steffen,
    Dieser funktioniert aber nicht und ich erhalte die Fehlermeldung "Server Error '/' Application" Instance failure. Was mache ich falsch?

    die genaue und vollständige Fehlermeldung wäre hilfreich.

    Grundsätzlich ist davon abzuraten, auf einem Webserver (zumindest, wenn der nicht unter eigener Kontrolle ist, bspw. bei einem Rootserver) mit Benutzerinstanzen zu arbeiten.

    Füge die Datenbank ganz normal an den SQL Server (Express) an und pass deinen ConnectionString dann an.

      <add name="myConnectionString" connectionString="SERVER=(local);DATABASE=db1234567;UID=<Benutzer>;PWD=<Passwort>;" />

    ggfs. musst Du noch Protokolle aktivieren. Wenn TCP/IP verwendet werden soll, kannst Du bspw. das hier nehmen:

      <add name="myConnectionString" connectionString="SERVER=127.0.0.1;ADDRESS=127.0.0.1,1433;DATABASE=db1234567;UID=<Benutzer>;PWD=<Passwort>;" />

    1433 ist der Standardport, wenn der geändert wurde, musst Du den im ConnectionString natürlich noch anpassen.

     


    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, 5. Mai 2010 22:34
    Moderator
  • Hallo Steffen,

    Bei meinem Server handelt  es sich um einen Root-Server Windows Web Server 2008 mit Plesk 9 (64 Bit)
    und Windows SQL Server 2008.

    Hast Du SQL Server Express installiert oder eine andere Edition?

     

    Auf der Suche zum Thema Connectionstring fand ich diese Webseite:

    http://www.connectionstrings.com/sql-server-2008

    Auch fand ich heraus, dass mit dem Connectionstring eine "Instance" erzeugt werden muß.

    Unsicher bin ich mir, was ich bei User ID oder Password anzugeben habe. Wer ist damit gemeint?
    Oder sollte besser "Integrated Security=true" gewählt werden.

    Nein. Du solltest folgendes machen:

    SQL Server so einrichten, dass man mit SQL Benutzern arbeiten kann.

    SQL Server Management Studio
     -> <Server>
       -> Eigenschaften
         -> Reiter "Sicherheit"
           -> SQL Server und Windows-Authentifizierungsmodus

    Danach dann einen SQL Benutzer anlegen, der für den Zugriff auf deine Datenbank verwendet werden soll.

    Die Datenbank selbst kannst Du über das Management Studio anhängen.

    SQL Server Management Studio
     -> <Server>
       -> Datenbanken
         -> Anfügen
           -> <Datei auswählen>

    Dann noch der Datenbank den Benutzer und ggfs. die Rollen zuweisen, fertig.

    Der ConnectionString kann dann genau so aussehen wie in meinem ersten Posting.

     


    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
    Donnerstag, 6. Mai 2010 12:47
    Moderator

Alle Antworten

  • Hallo Steffen,
    Dieser funktioniert aber nicht und ich erhalte die Fehlermeldung "Server Error '/' Application" Instance failure. Was mache ich falsch?

    die genaue und vollständige Fehlermeldung wäre hilfreich.

    Grundsätzlich ist davon abzuraten, auf einem Webserver (zumindest, wenn der nicht unter eigener Kontrolle ist, bspw. bei einem Rootserver) mit Benutzerinstanzen zu arbeiten.

    Füge die Datenbank ganz normal an den SQL Server (Express) an und pass deinen ConnectionString dann an.

      <add name="myConnectionString" connectionString="SERVER=(local);DATABASE=db1234567;UID=<Benutzer>;PWD=<Passwort>;" />

    ggfs. musst Du noch Protokolle aktivieren. Wenn TCP/IP verwendet werden soll, kannst Du bspw. das hier nehmen:

      <add name="myConnectionString" connectionString="SERVER=127.0.0.1;ADDRESS=127.0.0.1,1433;DATABASE=db1234567;UID=<Benutzer>;PWD=<Passwort>;" />

    1433 ist der Standardport, wenn der geändert wurde, musst Du den im ConnectionString natürlich noch anpassen.

     


    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, 5. Mai 2010 22:34
    Moderator
  • Hallo Stefan,

    erstmal danke für Deine Antwort!

    Bei meinem Server handelt  es sich um einen Root-Server Windows Web Server 2008 mit Plesk 9 (64 Bit)
    und Windows SQL Server 2008.

    Der Servername lautet s1234567.onlinehome-server.info (Beispiel)
    Die Webseite für die User lautet subDomain.myDomain.de
    Ort der Datenbank: C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\db123456.mdf

    Für den SQL Server habe ich alle Vorkehrungen getroffen um einen Remote-Zugriff zu ermöglichen.
    TCP/IP enabled und für 1433 den Zugriff erlaubt. http://www.linglom.com/2009/03/28/enable-remote-connection-on-sql-server-2008-express/

    Auf der Suche zum Thema Connectionstring fand ich diese Webseite:
    http://www.connectionstrings.com/sql-server-2008

    Auch fand ich heraus, dass mit dem Connectionstring eine "Instance" erzeugt werden muß.

    Unsicher bin ich mir, was ich bei User ID oder Password anzugeben habe. Wer ist damit gemeint?
    Oder sollte besser "Integrated Security=true" gewählt werden.

    Grüße,

    Steffen

     

     

    Donnerstag, 6. Mai 2010 07:43
  • Hallo Steffen,

    Bei meinem Server handelt  es sich um einen Root-Server Windows Web Server 2008 mit Plesk 9 (64 Bit)
    und Windows SQL Server 2008.

    Hast Du SQL Server Express installiert oder eine andere Edition?

     

    Auf der Suche zum Thema Connectionstring fand ich diese Webseite:

    http://www.connectionstrings.com/sql-server-2008

    Auch fand ich heraus, dass mit dem Connectionstring eine "Instance" erzeugt werden muß.

    Unsicher bin ich mir, was ich bei User ID oder Password anzugeben habe. Wer ist damit gemeint?
    Oder sollte besser "Integrated Security=true" gewählt werden.

    Nein. Du solltest folgendes machen:

    SQL Server so einrichten, dass man mit SQL Benutzern arbeiten kann.

    SQL Server Management Studio
     -> <Server>
       -> Eigenschaften
         -> Reiter "Sicherheit"
           -> SQL Server und Windows-Authentifizierungsmodus

    Danach dann einen SQL Benutzer anlegen, der für den Zugriff auf deine Datenbank verwendet werden soll.

    Die Datenbank selbst kannst Du über das Management Studio anhängen.

    SQL Server Management Studio
     -> <Server>
       -> Datenbanken
         -> Anfügen
           -> <Datei auswählen>

    Dann noch der Datenbank den Benutzer und ggfs. die Rollen zuweisen, fertig.

    Der ConnectionString kann dann genau so aussehen wie in meinem ersten Posting.

     


    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
    Donnerstag, 6. Mai 2010 12:47
    Moderator
  • Danke Stefan und Robert

    für die ausführliche Anleitung!

    Ich habe den SQL Server 2008 deinstalliert (blickte bei den von mir gemachten Einstellungen nicht mehr durch) und installiere gerade SQL Server 2008 R2 RTM - Express with Management Tools.

    Danach werde ich mich an Eure Anweisung halten.
    Eigentlich hatte ich bei vorherigen Installation ebenfalls diese Schritte ausgeführt.....
    und danach alles strubbelig gemacht...

    Grüße,

    Steffen

    Donnerstag, 6. Mai 2010 14:33
  • Hallo Stefan,

    der SQL Server 2008 Express R2 und Advanced Services ist erfolgreich installiert.

    Möchte ich im Web Developer 2010 Express dem Datenbank-Explorer eine neue Datenverbindung
    mit Windows-Authentifizierung hinzufügen und prüfe die Testverbindung, so erhalte ich die Fehler-
    meldung:

    Fehler beim Generieren einer Benutzerinstanz von SQL Server
    aufgrund eines Fehlers beim Starten des Prozesses für die
    Benutzerinstanz. Die Verbindung wird getrennt.

    Grüße,

    Steffen

    Freitag, 7. Mai 2010 06:49
  • Hallo Stefan,

    mir ist folgendes aufgefallen.

    Bei der Installation des SQL Server 2008 Express R2 habe ich die "Standard Instanz " mit der Bezeichnung und den Pfaden "MSSQLServer" übernommen.

    Starte ich das Server Management Studio wird im Object-Explorer auf SQLEXPRESS statt,
    wie ich es erwartet hätte, auf MSSQLServer verwiesen.

    Vor der Installation von SQL Server 2008 R2 hatte ich die vorherige Version deinstalliert.

    Ich werde erneut alles was mit SQL Server zu tun hat deinstalieren und erneut installieren.

    Gruß,

    Steffen

    Freitag, 7. Mai 2010 08:25
  • Hallo Stefan,

    auch nach erneuter Installation des SQL Server erhalte ich bei

    -> Visual Web Developer 2010 Express

      -> Datenbank-Explorer

        -> Datenverbindung

          -> Verbindung hinzufügen

            -> Testverbindung

    die Meldung:

    Fehler beim Generieren einer Benutzerinstanz von SQL Server
    aufgrund eines Fehlers beim Starten des Prozesses für die
    Benutzerinstanz. Die Verbindung wird getrennt.

    Was ist da bloß zu tun?

    Gruß,

    Steffen

    Freitag, 7. Mai 2010 12:31
  • Hallo Steffen,
    auch nach erneuter Installation des SQL Server erhalte ich bei

    -> Visual Web Developer 2010 Express

      -> Datenbank-Explorer

        -> Datenverbindung

          -> Verbindung hinzufügen

            -> Testverbindung

    die Meldung:

    Fehler beim Generieren einer Benutzerinstanz von SQL Server
    aufgrund eines Fehlers beim Starten des Prozesses für die
    Benutzerinstanz. Die Verbindung wird getrennt.

    Du versuchst immer noch, eine Benutzerinstanz hinzuzufügen. Lass das doch einfach mal weg und geh den Weg, den ich oben beschrieben habe, indem Du die Datenbank direkt über das SQL Server Management Studio anhängst. Den Datenbank-Explorer, die Verbindung, ... brauchst Du in der Form so gar nicht. Es reicht völlig, bspw. in der web.config einen ConnectionString (Beispiele siehe die anderen Postings von mir) zu erstellen und diesen dann in einer SqlConnection anzugeben. Siehe dazu bspw.:

      http://www.aspnetzone.de/forums/permalink/210041/210016/ShowThread.aspx#210016

     


    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, 7. Mai 2010 13:18
    Moderator
  • Hallo Stefan,

    ich wäre so froh, wenn Dein Connectionstring funktionieren würde.
    Er tut es aber leider nicht.

    Selbst wenn dieser funktionieren würde, könnte ich bei den "SqlDataSource-Aufgaben" einer
    SqlDataSource die Datenquelle nicht konfigurieren und somit diese Source nicht, z.B FormView,
    binden. Den auch hier erhalte ich den Fehler:

    Fehler beim Generieren einer Benutzerinstanz von SQL Server
    aufgrund eines Fehlers beim Starten des Prozesses für die
    Benutzerinstanz. Die Verbindung wird getrennt.

    Der SQL Server für sich gesehen, funktioniert einwandfrei.
    Lokal kann ein Web Developer-Projekt die Datenbank benutzen.

    So sehr ich im Internet suche, ich finde dafür keine Lösung dafür(...oder werde nicht schlau daraus).

    Gruß,

    Steffen

    Freitag, 7. Mai 2010 16:54
  • Hallo Zusammen,

    das Problem mit dem Connectionstring hat sich gelöst.

    Es lag an 3!! verschiedenen "Firewalls", die mein Webserver-Anbieter vorab installiert hatte.

    Erst dank Telnet war ich dahinter gekommen.

     

    Grüße,

    Steffen

    Dienstag, 11. Mai 2010 19:46
  • Hallo Steffen,

    das Problem mit dem Connectionstring hat sich gelöst.

    Es lag an 3!! verschiedenen "Firewalls", die mein Webserver-Anbieter vorab installiert hatte.

    was ist das denn für ein "Provider"? Firewall ist ja schön und gut aber gleich drei? Sind das Anwendungen, die direkt auf dem Server laufen oder vorgeschaltete Firewalls?

     


    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, 12. Mai 2010 09:04
    Moderator
  • Hallo Stefan,

    es sind keine vorgeschalteten Firewalls.

    Es sind die vom sogenannten Controllcenter, Windows und PLESK.
    Jeweils eigenständige Firewalls.

    Grüße,

    Steffen

    Dienstag, 26. Oktober 2010 06:19
  • Hallo Steffen,

    Es sind die vom sogenannten Controllcenter, Windows und PLESK.
    Jeweils eigenständige Firewalls.

    die FW, die über das ControlCenter verwaltet wird, ist IIRC vorgeschaltet und eben nicht auf dem Rootserver selbst, wird also bei localhost bzw. 127.0.0.1 sehr wahrscheinlich nicht greifen. Dass Plesk eine FW hat, ist mir neu (kann aber gut sein, da ich damit das letzte mal vor x Jahren was gemacht habe). Die Windows Firewall kann als Ursache in Frage kommen aber auch hier ist es eigentlich so, dass diese bei Zugriff über 127.0.0.1 eigentlich gar nicht greifen sollte. Aber da ich kein Netzwerkspezialist bin, wäre das eher eine Frage für ebensolche :)

     


    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
    Dienstag, 26. Oktober 2010 07:11
    Moderator
  • Hallo Stefan,

    ....Aber da ich kein Netzwerkspezialist bin, wäre das eher eine Frage für ebensolche :).... das gilt mehr oder weniger auch für mich.

    Bei PLESK gibt es einen eigenen Bereich FW in dem vordefinierte oder eigene Regeln erstellt werden können.
    Wie und wo die am Ende greifen, da müßte ich mich erst schlau machen und dazu bräuchte ich Zeit ;-)

    Ach ja, da fällt mir die Geschichte mit den 30.000 Spam-Mails/Std., und das über Nacht, ein.

    Hatte da ein wenig zuviel mit den FW's ausprobiert. Soviel zudem Thema Netzwerkspezialist...

    Grüße,

    Steffen

    Samstag, 30. Oktober 2010 17:53