Announcement

Collapse
No announcement yet.

OleDB zu SQL-Server / Anfänger

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

  • OleDB zu SQL-Server / Anfänger

    Hallo!
    Bin wirklich blutiger Anfänger und suche mich gerade scheckig.

    Ich habe eine Datenbank namens Wawi auf MS SQL-Server, die ich von einer Webseite (aspx) aus ansprechen will. Den Connectionstring habe ich mir mit einer UDL-Datei gemacht, aber wenn ich die Webseite starte, erhalte ich: "Wawi-DB kann nicht geöffnet werden. Fehler bei der Anmeldung."

    Die Webseite liegt im Verzeichnis des IIS, die DB im Verzeichnis SQL-Servers.

    Ich vermute, dass der Benutzername der DB vielleicht nicht stimmt. Aber ich melde mich bei der DB überhaupt nicht an, sondern es geht über die Windows-Authentifizierung.

    Hier auszugsweise der Code der Webseite:

    <%@ Import Namespace="System.Data.OleDB" %>
    <html>
    <script runat="server">
    Sub Page_Load(sender as Object, e As EventArgs)
    Dim conClsf As OleDBConnection
    Dim cmdMbrs As OleDBCommand
    Dim rdrMbrs As OleDbDataReader

    conClsf= New OleDBConnection("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=WAWI;Data Source=DAME\SQLExpress;User id=admin;Password=;")
    conClsf.Open


    Grüßle,
    Heike

  • #2
    MS SQL-Server? Dann ist der Weg über OLE DB ein Umweg. MS liefert im .NET-Framework einen nativen ADO.NET-Provider. Namespace ist war mit SQL...

    Comment


    • #3
      Hallo Heike,

      Ich vermute, dass der Benutzername der DB vielleicht nicht stimmt. Aber ich melde mich bei der DB überhaupt nicht an, sondern es geht über die Windows-Authentifizierung.
      da es sich um eine ASP.NET-Anwendung handelt, greift der Arbeitsprozess von ASP.NET unter dem Konto über die integrierte Windows-Authentifizierung zu, das für ASP.NET zugewiesen wurde. Im Fall von Windows 2000 oder Windows XP nutzt ASP.NET das Benutzerkonto ASPNET, so dass die Datenbank die Rechte für den Benutzer ASPNET extra zuweisen muss. Das könnte zum Beispiel so aussehen (in diesem Beispiel erhält ASPNET alle Rechte an der Datenbank, was im Fall einer für das Internet vorgesehenen Anwendung eine schlechte Wahl wäre):

      Code:
      osql -E -S MachineName\InstanceName -Q "sp_grantlogin 'MachineName\ASPNET'"
      osql -E -S MachineName\InstanceName -d NameOfDb -Q "sp_grantdbaccess 'MachineName\ASPNET'"
      osql -E -S MachineName\InstanceName -d NameOfDb -Q "sp_addrolemember 'db_owner', 'MachineName\ASPNET'"
      Alternativ dazu kann jedoch der Zugriff über ein SQL Server-Login erfolgen, bei dem der Benutzername und das Passwort in der Verbindungszeichenfolge festgelegt wird (d.h. die integrierte Windows-Authentifizierung wird in der Verbindungszeichenfolge nicht angefordert). In diesem Fall steht der Zugriffsweg auf die Datenbank eindeutig fest, so dass die Datenbank-Rechte völlig unabhgängig von der ASP.NET-Konfiguration vergeben werden können.

      P.S: In der Tat ist der OLE DB-Provider nur die 2. Wahl. Die Klassen aus dem Namespace System.Data.SqlClient greifen nicht über einen OLE DB Provider, sondern statt dessen direkt über das native Protokoll TDS (Tabular Data Stream) auf den MS SQL Server zu. Die Klasse SqlConnection ist für den Verbindungsaufbau zuständig.
      Zuletzt editiert von Andreas Kosch; 06.05.2007, 09:38.

      Comment


      • #4
        Hallo Andreas!

        Vielen Dank für die ausführliche Antwort, insbesondere die Info über das Benutzerkonto Asp.Net.

        Ich habe jetzt einen neuen Benutzer in der DB angelegt und benutze die SQL-Connection. Und es geht.... :-)

        Bin jetzt umgestiegen auf das Quickstart Tutorial in der SDK-Dokumentation.

        Comment

        Working...
        X