SQL Zugriffsprobleme



  • Hallo Leute,

    ich brauche da mal einen Denkanstoss.

    Ich habe zwei Apps die auf einen Datenbank (SQL Express 2005) zugreifen. Die eine schreibt Daten hinein, die andere liest die Daten um diese anzuzeigen.

    Lasse ich beide Programme in der Entwicklungsumgebung laufen, gibt es keine Konflikte und alles scheint problemlos zu laufen.

    Wenn ich aber die Programme im Echt-Betrieb laufen lasse (also die Releases), wird immer eines der beiden Programme geblockt, da es einen Fehler bei der Anmeldung für den User gibt. Halte ich das jeweils andere Programm an, gehts. Es gibt also derzeit keine Co-Existenz.

    Muss ich irgendwo einen Parameter setzten, dass der gleiche User mehrfache Verbindungen zur DB aufbauen kann (es wird die Windows Authentifizierung benutzt)?

    Oder ist der Programmcode das Problem?

    Zum Schreiben werden die Daten zunächst in ein DataSet kopiert:

    String sqlQuery = "SELECT * FROM " + Table;
    DataSet dataSet = new DataSet();
    SqlConnection dbStream = new SqlConnection(conString);
    SqlDataAdapter adapter = new SqlDataAdapter(sqlQuery, dbStream);
    SqlCommandBuilder cmb = new SqlCommandBuilder(adapter);
    adapter.Fill(dataSet, Table);
    

    Die Daten werden dann in das DataSet geschrieben, die aktualisierung erfolgt dann am Ende mit:

    adapter.Update(dataSet);
    

    Zum Lesen wird micht der ComandBuilder verwendet, denn es wird ja nichts zurückgeschrieben:

    String sqlQuery = "SELECT "+text+" FROM " + Table;
    SqlConnection dbStream = new SqlConnection(conString);
    SqlCommand sqlcom = dbStream.CreateCommand();
    DataSet dataSet = new DataSet();
    SqlDataAdapter adapter = new SqlDataAdapter(sqlQuery, dbStream);
    adapter.Fill(dataSet, Table);
    

    Jemand ne Ahnung?



  • Wie sieht denn dein SqlConnection-String aus?



  • "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\App_Data\DATABASE.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
    

    Wobei der Pfad und der Namen dynamisch eingetragen werden.
    Das ist ein Berechtigungsproblem, oder?
    Ich habe gelesen, dass man für die DB einen Single User Mode verwenden kann, ist dieser vielleicht aktiviert (SQL ist eine Standard-Installation)?

    Auf jeden Fall nutzen bei Apps den gleichen Windows User.



  • Der »SqlDataAdapter« bietet eine schier unüberschaubare Anzahl Fehlermöglichkeiten (und gehört deshalb nicht unbedingt zu meinen engen Freunden).

    Ein aufmerksames Studium des Artikels "Mit dem »SqlDataAdapter« arbeiten" sollte dich aber zum gewünschten Ziel führen.



  • Ich nehme an das "AttachDbFilename" wird das Problem sein...



  • Hallo Hustebaer,

    wie sollte der String den aussehen wenn ich "AttachDbFilename" nicht verwenden sollte (derzeit nutze ich SQL Server 2005 Express)?



  • So läuft.
    Hustbear Du hattes recht.
    Die DB muss in der Menagement Konsole erstellt werden, dann braucht man auch "AttachDbFilename" nicht mehr.
    Ich habe aus Unwissen die DB mit VS erstellt.

    Danke.


Log in to reply