Announcement

Collapse
No announcement yet.

Installation und Konfiguration von MSDE

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Installation und Konfiguration von MSDE

    Hallo zusammen,
    ich bin neu bei .NET und habe einige Probleme mit der Konfiguration von MSDE, ich hoffe mir kann jemand weiterhelfen (benutze Win XP Pro SP 1 und neueste MSDE english):

    Ich habe zunächst MSDE installiert(=setup SAPWD="password"). Danach habe ich, um die Beispiele aus dem Microsoft Buch '101 VB.NET Applicationen' nutzen zu können, eine neue Instanz 'NetSDK' installiert (=setup SAPWD="password" INSTANCENAME="NetSDK"'). Nun laufen 2 Services bei mir, 'MSSQLServer' und 'MSSQL$NetSDK'.

    Dann habe ich aus einem anderen VB-Buch ein Beispiel zur Datenbindung machen wollen, leider ohne ERfolg :-( SQLConnection1 erstellt die folgende Zeilen:
    Me.SqlConnection1.ConnectionString = "workstation id=""COMPUTERNAME"";packet size=4096;integrated security=SSPI;data source=" & _
    """(local)\NetSDK"";persist security info=False;initial catalog=Northwind"
    CType(Me.DataSet11, System.ComponentModel.ISupportInitialize).EndInit( )

    Wenn ich mit der rechten Maustaste auf den SQLDataAdapter1 klicke und 'Preview Data' auswähle werden alle 9 Employee-Datensätze angezeigt. Wenn ich aber dann die Applikation starte kann ich mich nicht mit dem SQLServer (lokal = MSDE) verbinden. Es scheitet schon bei:
    Me.SqlConnection1.Open()

    Ich habe bereits mehrere Foren durchgeblättert und die Hilfe von Microsoft. Einen User namens 'ASPNET' kann ich aus Sicherheitsgründen nicht anlegen. Und die Verbindung über TCP/IP hab ich auch schon probiert ('Network Library =dbmssocn' zur SQL-Verbindung hinzugefügt), leider auch ohne Erfolg. TCP/IP ist aber als erlaubtes Protokoll eingetragen (der Tipp stand irgendwo hier im Forum).

    Danke im voraus für Eure Hilfe!

  • #2
    Hallo,

    um das Problem einzugrenzen, würde ich zuerst den Test mit dem MSDE-Zubehör <b>osql.exe</b> fortsetzen. Ist der folgende Login-Aufruf erfolgreich?
    <pre>
    osql <b>-S</b><i>Servername</i> <b>-U</b><i>Benutzername</i> <b>-P</b><i>Passwort</i>
    </pre>
    Wenn ja, würde ich dann die <i>SqlConnection1</i>-Eigenschaft <b>ConnectionString</b> so umstellen, dass nicht die integrierte NT-Anweldung (Benutzerkonto) genutzt wird, sondern der "alte" Weg über die Anmeldung über die Kombination von Benutzername und Passwort:
    <pre>
    SqlConnection1.ConnectionString = "data source=(local);initial catalog=Northwind;user id=sa;Password=sa"
    </pre>
    Ist dieser Anmeldeweg über den vordefinierten Datenbank-Benutzer <i>sa</i> erfolgreich?
    &#10

    Comment


    • #3
      Hallo Andreas,

      danke für die schnelle Antwort!
      Leider funktioniert das so nicht. Bei dem Befehl erhalte ich als Fehlermeldung:<BR>
      <i>Login failed for user 'sa'. Reason: Not associated with a trusted SQL Server connection. </i>

      Wenn ich allerdings den Befehl 'osql -S (local)\NetSDK -E' verwende scheint es zu funktionieren, jedenfalls erscheint dann 1&gt;

      Hilft Dir bzw. mir das weiter

      Comment


      • #4
        versuche mal, beim msde-setup statt sapwd="***" das attribut BLANKSAPWD=1 zu setzen - beides geht nicht (blanksapwd wird dann ignoriert).

        du willst ja im connection string mit dem sspi eine connection aufmachen ohne passwort - das muss die msde auch erlauben.

        ist nur ein gedanke - vielleicht bringt es was.

        steffe

        Comment


        • #5
          Hi Steffen,

          würde das dann nicht bedeuten, daß sich <B>jeder</B> hier im Netzwerk auf meinen SQL-Server verbinden kann, und dann auch noch als Admin? Wäre ja nicht so gut....

          SSPI sagt mir leider gar nix :-( (Wie gesagt, fange gerade erst an mit .NET, da gibts wohl noch ein paar Wissenslücken...). Das Beispiel hab ich aus nem Buch bzw. VS.NET hat mir das automatisch so erstellt. Ist SSPI die Windows-Anmeldung? Ansonsten gibts noch die SQL-Anmeldung, oder? Würde gerne bei Windows bleiben (wenns geht). Danke für Eure Hilfe schonmal

          Comment


          • #6
            Hallo Kai,

            &gt;... -E' verwende scheint es zu funktionieren.

            In diesem Fall wird die MSDE im "sicheren" Modus betrieben und erlaubt nur die implizite Anmeldung über das Benutzerkonto. In Deinem Fall (osql.exe wird gestartet) ist das das Konto des interaktiv angemeldeten Benutzers. Solange die .NET-Anwendung unter dem gleichen Benutzerkonto ausgeführt wird, sollte auch dort der Zugriff erfolgreich sein.

            Anders sieht die Situation jedoch aus, wenn die .NET-Anwendung unter einem anderen Konto ausgeführt wird (Bsp: ASP.NET Web Form, Web Service, Dienst etc.). In diesem Fall muss das dort verwendete Benutzerkonto auch einen "Einstieg" in die MSDE-Datenbank erhalten. Dies könnte am Beispiel des Benutzerkontos ASPNET so aussehen:
            <pre>
            osql -E -S localhost -d Testdatenbank
            EXEC sp_grantlogin 'Rechner\ASPNET'
            go
            EXEC sp_defaultdb 'Rechner\ASPNET', 'Testdatenbank'
            go
            EXEC sp_grantdbaccess 'Rechner\ASPNET'
            go
            EXEC sp_addrolemember 'db_owner', 'Rechner\ASPNET'
            go
            </pre>

            Um welche Art von Anwendung handelt es sich in Deinem Fall

            Comment


            • #7
              Hallo Andreas,
              es handelt sich um das ASP.NET-Beispielprogramm im Kapitel 10.6 (= Webbasierte Anwendungen / Datenbindung) des Buches 'Visual Basic.NET - Grundlagen und Profiwissen' von Doberenz / Kowalski. Dort wird die SQL-Verbindung etc. quasi per Drag-and-Drop zusammengeklickt (also nicht selbst 'programmiert'). Dieser Code wird dann bei Page_Load ausgeführt:

              If Not Me.IsPostBack Then ' Evals true first time browser hits the page<BR>
              Try<BR>
              Try<BR>
              Me.SqlConnection1.Open()<BR>
              Catch ex As Exception<BR>
              Response.Write("Unable to open SQL Connection. ")<BR>
              End Try<BR>
              Me.SqlDataAdapter1.Fill(DataSet11)<BR>
              Me.SqlConnection1.Close()<BR>
              Me.DataBind()<BR>
              Catch ex As Exception<BR>
              Response.Write("Server not available!")<BR>
              End Try<BR>
              End If<BR>

              Als Fehlermeldung erhalte ich 'Unable to open SQL Connection', also kann ich schon gar nicht die Verbindung öffnen.
              Wenn ich aber nun auf der Form-Seite auf 'SQL data Adapter1' klicke und dann auf 'Preview Data' und 'Fill Dataset', bekomme ich alle 9 Employees der Northwind-DB angezeigt...?
              Vielleicht ist noch wichtig was mir gerade erst aufgefallen ist: Wenn ich ZUM ERSTEN MAL auf 'Fill Dataset' klicke erhalte ich die Fehlermeldung 'SqlDataAdapter1. The data adapter could not return the data from the data source. The connection string is invalid.'. Dann klicke ich 'OK' und direkt danach nochmal auf 'Fill Dataset' und dann läufts....??? Und zwar immer! Also immer der Fehler zuerst, danach läufts immer, ich kann also 10mal auf 'Fill Dataset' klicken und bekomme die Daten korrekt zurück. Wenn ich dann VS.NET neustarte bekomme ich wieder beim ersten Mal den Fehler..... Argl!
              Danke für Eure Hilfe

              Comment


              • #8
                hm, ist ja komisch!
                leider hab ich im mom ein anderes projekt und kein dot.net auf dem rechner...

                steffe

                Comment


                • #9
                  Hallo,

                  &gt;..'Preview Data' und 'Fill Dataset', bekomme ich alle 9 Employees der Northwind-DB angezeigt...?

                  dieser Zugriff aus VS.NET heraus läuft unter dem aktuellen Benutzerkonto (Administrator?) des interaktiv am Rechner angemeldeten Benutzers.

                  &gt;Als Fehlermeldung erhalte ich 'Unable to open SQL Connection'...

                  Wenn die ASP.NET-Anwendung gestartet wird, läuft die Anwendung (<i>aspnet_wp.exe</i>) unter einem <b>anderen</b> Benutzerkonto (in der Voreinstellung ASPNET). Wenn die MSDE-Datenbank nur die integrierte Windwos-Authentifizierung zulässt, hat man nur die Wahl zwischen 2 Einstellungen:

                  1. Der Benutzer ASPNET erhält Zugriffsrechte auf die Datenbank.

                  2. Die ASP.NET-Anwendung wird über einen <i>Web.config</i>-Eintrag unter einem Benutzerkonto ausgeführt, das bereits die Zugriffsrechte auf die Datenbank hat.

                  Der Internet Information Service IIS (genauer gesagt <i>inetinfo.exe</i>) läuft in der Standardkonfiguration unter dem lokalen Systemkonto (Benutzerkonto SYSTEM). Dieses Konto hat sehr viele Rechte auf dem Rechner und ist daher aus Sicherheitsgründen "bedenklich". Um dieses Problem zu lösen, nutzt die ASP.NET-Laufzeitumgebung das bei der Installation des .NET Frameworks automatisch neu angelegte Benutzerkonto <b>ASPNET</b>. Dieses Konto erhält deutlich weniger Rechte, wobei ASP.NET so flexibel ist, dass in der <i>machine.config</i> (Installationsverzeichnis von .NET) ein beliebiges anderes Konto global gültig festgelegt werden kann. Der <b>userName</b>-Eintrag <i>machine</i> steht dabei für ASPNET, wobei bei diesem speziellen Benutzer als <b>passwort</B> der Wert <i>AutoGenerate</i> eingetragen werden muss. Im Kommentarblock oberhalb dieses Eintrags sind alle Optionen ausführlich beschrieben. :
                  <pre>
                  <processModel enable="true" timeout="Infinite" idleTimeout="Infinite"
                  shutdownTimeout="0:00:05" requestLimit="Infinite" requestQueueLimit="5000"
                  restartQueueLimit="10" memoryLimit="60" webGarden="false" cpuMask="0xffffffff"
                  userName="machine" password="AutoGenerate" logLevel="Errors"
                  clientConnectedCheck="0:00:05" comAuthenticationLevel="Connect"
                  comImpersonationLevel="Impersonate" responseRestartDeadlockInterval="00:09:00"
                  responseDeadlockInterval="00:03:00" maxWorkerThreads="25" maxIoThreads="25"/>
                  </pre&gt

                  Comment


                  • #10
                    Hi,
                    ja, ich arbeite lokal als Admin.
                    Wie kann ich denn dem ASPNET Account Zugriffsrechte auf die Northwind DB geben? Habe in VS.NET geguckt und osql -? aufgerufen, beides aber ohne Hinweis. Hast Du dafür auch nen Tip? :-) Danke

                    Comment


                    • #11
                      &gt;Wie kann ich denn dem ASPNET Account Zugriffsrechte auf die Northwind DB geben?

                      Siehe <i><a href="/webx?14@@.2cb7dd71/4">Andreas Kosch 03.02.2004 13:13</a></i&gt

                      Comment


                      • #12
                        Hi Andreas, <BR>
                        äh, oops, das hatte ich wohl überlesen da ich es nicht verstanden habe ;-) Ich hab jetzt mal alle Befehle ausgeführt, lief auch alles ohne Fehler durch, die Rückmeldungen sahen ganz gut aus (added to role 'db_owner' etc.). Dann habe ich den SQL-Server (MSDE) mal neu gestartet und mein VB.NET Projekt neu geladen. Und schwupps..... 'Unable to open SQL Connection' leider immer noch. Wie gesagt, 'Preview Data' läuft ab dem zweiten Versuch immer! Oje, wird immer komplizierter, oder? Danke und Gruß

                        Comment


                        • #13
                          Hallo zusammen,
                          hat evtl. noch jemand eine Idee? Leider ist bei mir der Stand immer noch wie oben beschrieben, d.h. es läuft nicht :-(. Gibts noch Hoffnung? Neu installieren hatte ich schon mehrfach gemacht, hat aber nix gebracht.... Dake für Eure Hilfe

                          Comment

                          Working...
                          X