Announcement

Collapse
No announcement yet.

Zugriff auf Paradox-Datenbank

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

  • Zugriff auf Paradox-Datenbank

    Hallo Leute

    In dem Beitrag "Zugriff auf Paradox-DB" beschrieb Andreas Kosch wie man mit .NET auf Paradox-Datenbanken zugreift.
    Ich habe das ganze in einen Web-Service eingebaut. Rufe ich diese Funktion auf, kommt folgender Fehler:

    Eine nicht behandelte Ausnahme des Typs 'System.Web.Services.Protocols.SoapException' ist in system.web.services.dll aufgetreten.

    Zusätzliche Informationen: System.Web.Services.Protocols.SoapException: Der Server konnte die Anforderung nicht verarbeiten. ---> System.Data.OleDb.OleDbException: Unerwarteter Fehler vom externen Datenbanktreiber (11265).
    at System.Data.OleDb.OleDbCommand.ExecuteCommandTextE rrorHandling(Int32 hr)
    at System.Data.OleDb.OleDbCommand.ExecuteCommandTextF orSingleResult(tagDBPARAMS dbParams, Object& executeResult)
    at System.Data.OleDb.OleDbCommand.ExecuteCommandText( Object& executeResult)
    at System.Data.OleDb.OleDbCommand.ExecuteCommand(Comm andBehavior behavior, Object& executeResult)
    at System.Data.OleDb.OleDbCommand.ExecuteReaderIntern al(CommandBehavior behavior, String method)
    at System.Data.OleDb.OleDbCommand.ExecuteReader(Comma ndBehavior behavior)
    at System.Data.OleDb.OleDbCommand.System.Data.IDbComm and.ExecuteReader(CommandBehavior behavior)
    at System.Data.Common.DbDataAdapter.FillFromCommand(O bject data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
    at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
    at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable)
    at WebService1.db_connection.GetUser() in c:\inetpub\wwwroot\webservice1\db_connection.asmx. cs:line 71
    --- Ende der internen Ausnahmestapelüberwachung ---

    Kopiere ich den Code der Funktion in eine Funktion einer normalen Windows Anwendung geht das ohne Probleme.
    Der Code sieht so aus:

    String constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Daten\\ACS\\Dat001;Extended Properties=Paradox 5.x;";
    OleDbConnection conn = new OleDbConnection(constr);
    DataSet ds = new DataSet();
    String selstr = "Select * from Config";
    OleDbDataAdapter da = new OleDbDataAdapter(selstr,conn);
    conn.Open();
    da.Fill(ds,"Config");
    conn.Close();

    Ich habe das ganze auch schon über ODBC versucht, dass ging aber auch nicht. Da kam beim Öffnen die Meldung, dass die
    DataSource nicht angegeben sei. Kopiere ich das ganze in eine normale Windows Anwendung geht es ???
    Hab ich hier irgend etwas übersehen oder ist das noch eine Problem mit Zugriffsrechten ???
    Hat jemand eine Idee?

    cu Enrico

  • #2
    Hallo,

    selbstverständlich ist der Zugriff über diesen Weg nur dann erfolgreich, wenn <br>
    a) das verwendete Benutzerkonto die Zugriffsrechte auf das NTFS-Verzeichnis hat, und <br>
    b) das verwendete Benutzerkonto auch den Zugriff auf die JET-Konfiguration (Registry) hat. <br>
    Am einfachsten geht das über ein eigenes Benutzerkonto für diesen Web Service, das über die <b>Web.config</b> festgelegt wird. Mit dem folgenden Beispiel kann ich die Daten aus der Paradox 5-Tabelle erfolgreich abrufen:
    <pre>
    [WebMethod]
    <b>public</b> DataSet GetParadoxData()
    {
    <b>string</b> sConStr = @<font color="#9933CC">&quot;Provider=Microsoft.Jet.OLEDB .4.0;Data Source=C:\Database;Extended Properties=Paradox 5.x;&quot;</font>;
    OleDbConnection aCon = <b>new</b> OleDbConnection(sConStr);
    aCon.Open();
    OleDbCommand aCmd = <b>new</b> OleDbCommand(<font color="#9933CC">&quot;SELECT * FROM Country&quot;</font>, aCon);
    OleDbDataAdapter aAdp = <b>new</b> OleDbDataAdapter(aCmd);
    DataSet aDS = <b>new</b> DataSet();
    aAdp.Fill(aDS, <font color="#9933CC">&quot;Country&quot;</font>);
    <b>return</b> aDS;
    }
    </pre>

    In der <b>Web.config</b> des Web Services wird die folgende Zeile hinzugefügt (das Passwort muss entsprechend ausgetauscht werden):
    <pre>
    <identity impersonate="true" userName="Administrator" password="...."/>
    </pre>
    Anstelle vom Administrator-Konto kann jedes andere genutzt werden, bei dem der Zugriff aus einer Windows-Anwendung heraus erfolgreich ist

    Comment


    • #3
      Hallo Herr Kosch,

      das hat wunderbar hingehauen, vielen Dank. Aber mit welchem Benutzer versucht denn der Webservice eigentlich auf die Verzeichnisse zu zugreifen?

      cu Enric

      Comment


      • #4
        Hallo Enrico,<p>
        das ist der Nutzer SYSTEM.<br>
        Heik

        Comment


        • #5
          Hallo,

          &gt;..Aber mit welchem Benutzer versucht ..

          das legt die <b>machine.config</b> aus dem Verzeichnis <i>C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\CO NFIG</i> im Abschnitt <b>processModel</b> fest. Die eigene <b>Web.config</b> überschreibt nur die globalen Einstellungen, so dass man unabhängig von der globalen Konfiguration wird.

          Die globale Voreinstellung nutzt das Benutzerkonto ASPNET (alias ASPNET_WP)

          Comment


          • #6
            Hallo!

            Ich habe ein ähnliches Problem.

            Bei mir funktioniert die Webanwendung (IIS, ASP.NET C#, BDE 5.2, Paradox 7.x) einwandfrei wenn ich sie mit
            <identity impersonate="true" userName="Administrator" password="..."/> laufen lasse.
            Ich erstelle ich nun einen neuen (eingeschränkten) Benutzer und geben ihm schreibrechte auf die Ordner:
            - DB Ordner
            - C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temp orary ASP.NET
            Files
            -C:\Dokumente und Einstellungen\<PC>\ASPNET\Lokale Einstellungen\Temp
            sowie leserecht auf das ganze System (Gruppe Benutzer).

            Leider bekomme ich dann wieder die Meldung:
            Unerwarteter Fehler vom externen Datenbanktreiber (11265).

            Bin mit meinen Dateien leider am Ende.

            Von Microsoft habe ich außerdem diese Seite als Hilfe gefunden:
            http://www.microsoft.com/germany/msd....mspx?mfr=true

            Scheinbar aber ohne erfolg...

            Hat jemand von euch noch eine Idee?
            LG,
            Rene

            Comment

            Working...
            X