Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von mosspower
Thema: Konzept für (remote) Deployment gesucht
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo "Kollegen",

ich suche eine Möglichkeit, möglichst schnell und komfortabel eine geänderte Programmversion (Windowsservice) auf den Ausführungsserver zu stellen.

Optimallösung wäre:
1. Kompilierung geändertes Projekt
2. Herunterfahren des Services auf dem Server
3. Kopieren der notwendigen neuen Dateien auf den Server
4. Starten des Services auf dem Server

Gibt es hierfür Lösungen (fern ab vom Foundation Server, den wir nicht einsetzen?)

Bekommt man das mit MSBuild und / oder NAnt hin? Wie löst ihr diese Problematik? Mir geht nämlich das ewige Hin- und Herkopieren auf den Geist.

Danke schon mal für etwaige Antworten und Anregungen im Voraus.

Thema: Anzahl von Threads in einem Service begrenzt?
Am im Forum: Rund um die Programmierung

Hallo,

erst mal vielen Dank für eure Anregungen ...

Zitat von JuyJuka
Nachteile:
- Umständliche Programmieren
- Kompliziertes Debugging
- Threading ist unbedingt nötig (und Threading ist kompliziert )

Ja, weil es umständlich (Debugging, Logging, Exceptionhandling ect.) ist, habe ich alles aus der Serviceklasse ausgelagert. Das bedeutet, dass die Start-Methode nur einen Thread startet, der sich dann um alles weitere kümmert. So kann ich lokal die Threads einzeln oder den ganzen Service komplett in einer Consolenanwendung testen und debuggen. Entwickelt wird natürlich auch mit der Consolenanwendung.

Mein Serviceklasse ist also sehr schlank .. sieht lediglich so aus:

namespace LoeweService {
  public partial class Service : ServiceBase {
    /// <summary>
    /// The service main class
    /// </summary>
    public Service() {
      InitializeComponent();
    }

    private LoeweServiceManager loeweServiceManager = null;

    /// <summary>
    /// Starting service point
    /// </summary>
    protected override void OnStart(String[] args) {
      this.loeweServiceManager = new LoeweServiceManager();
      this.loeweServiceManager.severe += this.Servere;
      this.loeweServiceManager.Run();
    }

    /// <summary>
    /// Ending service point
    /// </summary>
    protected override void OnStop() {
      this.loeweServiceManager.Stop();
    }

    /// <summary>
    /// Severe event from LoeweServiceManager object has been fired
    /// </summary>
    private void Servere(Exception ex) {
      base.Stop();
    }

    /// <summary>
    /// System is shutting down
    /// </summary>
    protected override void OnShutdown() {
      this.loeweServiceManager.Stop();
    }
  }
}
Zitat von kleines_eichhoernchen
1) verwende bitte kein Thread.Sleep, sondern steig auf WaitHandle(AutoResetEvent, ManualResetEvent, Semaphore) oder Monitor.Wait/Pulse um.

Also, ich bin ja (noch) nicht so tief in Sachen Threads drinnen gewesen, bzw. weiß nicht genau ob ich das hier brauche, bzw. wie ich das einsetzen soll. Ich erkläre einmal kurz, wie ich meine Anwendung aufgebaut habe.

Im Configfile gibt es einen Sectionhandler, hier können Services angemeldet werden, z.B. mit display-name="BlaService" class="BlaServiceClass" ...

Der Hauptservice Instanziert einen ThreadManager (hier LoeweServiceManager). Diese Klasse (Methode) läuft andauernd mit einem Thread.Sleep(1000) und wartet auf Ereignisse (Logging, Errors, Mailinganforderungen, Messages ect.). Bei der Initialisierung dieser Klasse werden die Services aus dem Configfile gelesen und in einem bestimmten Verzeichnis nach den Klassen (Attribut class) gesucht. Hier wird dann mittels Reflection eine Instanz von dieser Klasse gebildet und die jeweilige implementierte Run-Methode wird als Thread aufgerufen.

Sieht dann in einem Beispiel so aus ...

public class OrdersMatchingService : BaseThread, IThreadClass { ...


 public void Run() {
      
      try {
        while(!base.AbortRequest) {
          // Do some work
         Thread.Sleep(1000);
        } ...

Ich habe absolut keine Performanceprobleme und das gezeigte funktioniert auch ohne Probleme. Nur will ich ja dazulernen. Was würdet ihr an dieser "Architektur" verbessern? Es wird von den Threads nicht auf Resourcen (im Speicher) zugegriffen, die auch von anderen Threads benötigt werden - die Threads laufen alle völlig autark. Also weiss ich nicht, wie ich hier Monitor oder Waithandles einsetzen soll oder könnte, hier fehlt mir leider der Background oder aber ich brauche die für meine "Problematik" überhaupt nicht (zumindest verstehe ich das jetzt so). Danke schon mal im Voraus für Hilfe.

Thema: Anzahl von Threads in einem Service begrenzt?
Am im Forum: Rund um die Programmierung

Hallo "Kollegen",

ich habe neu in einer Firma angefangen, die noch in der "Steinzeit" lebt - das ist ja nichts neues. Es gibt ganz viele verschiedene Programme (meisst Access), die halt etwas machen. Totales Chaos eben. Nun portiere ich die Funktionalität der Programme nach C#. Ich habe nun angefangen einen einzigen Service zu machen, der wiederum für jede Routine einen eigenen Thread startet. Es können locker insgesamt 50 Routinen werden. Gleichzeitig im Dauereinsatz sind max. fünf Threads, die anderen Routinen starten entweder nach Request oder einmal am Tag. Später ist dann vorgesehen, eine kleine WCF-Anwendungs-GUI zu erstellen, um die Threads (also die Routinen) kontrollieren (ein/ausschalten) zu können und den Service als Ganzes pfegen zu können.
Gegenwärtig bin ich bei 11 Threads (Routinen). Nun stelle ich mir die Frage, ob es hier Grenzen gibt (was ich nicht glaube) oder aber ob der Aufbau so richtig ist. Wie würdet ihr das ganze angehen? Bin ich auf dem "richtigen Weg"? Ich möchte halt weg von zig kleinen Anwendungen (die dann auch noch net mal gekapselt auf der Datenbank "rumrödeln"), sondern eine Anwendung haben, die das Zentral macht. Was hat es denn mit den Threads so auf sich? Ist doch eigentlich egal, wieviele ich gleichzeitig laufen lasse (solange ein Thread.Sleep(1000) bei allen drinnen ist - jeweils nach einer Prozessroutine), sollte es doch keine Performanceprobleme geben, oder?

Wäre nett, wenn sich der ein oder andere hier mal zu Wort meldet, um mir Feedback zu geben. Danke schon mal im voraus hierfür.

Gruß

P.S. Alle Routinen benötigen (i.d.R.) keine GUI

Thema: [gelöst] Generiertes Bild in HTML-Mail
Am im Forum: Web-Technologien

Vielen Dank für eure Antworten. Ich hatte ursprünglich die Lösung (binär) von vbprogger bevorzugt, musste dann aber feststellen, dass dies im MSIE nicht funzzt. Da aber alle Mails an Outlook gehen, ist die Lösung von manunidi optimal.

Vielen Dank für die gewonnenen Einsichten

Thema: [gelöst] Generiertes Bild in HTML-Mail
Am im Forum: Web-Technologien

Hallo Kollegen,

ist es möglich, eine Mail (im HTML-Format) mit einem generierten Bild zu senden, ohne dieses auf einem Webserver zur Verfügung zu stellen? Hintergrund ist der, dass ich ein Bild generiere und dieses dann in einer Mail verwenden möchte (nicht als Anhang, sondern als HTML in der Mail). Nun kann ich dieses generierte Bild ja auf den Webserver schieben und in der Mail "festverdrahtet" referenzieren, wäre ja kein Problem. Frage ist nur, ob man das nicht auch so einstellen kann, dass er das Bild gleich "live" überträgt.

Ich habe das gerade mit Thunderbird ausprobiert, wenn ich hier eine HTML-Mail mit Bild verschicke, dann funzzt das, dann kann ich auf lokales Bild referenzieren - wenn ich das mit C# via SmtpClient mache, dann nicht, also muss es eine Lösung geben, denn Thunderbird ist ja auch gecoded worden

Danke schon mal für etwaige Antworten.

Thema: UnauthorizedAccessException bei File.Move
Am im Forum: Web-Technologien

OK, erst mal Danke. Ich suche natürlich selbst, bis ich mich entschließe, einen Eintrag hier zu schreiben. Ich habe bisher leider nichts gefunden (weder hier noch in Google). Die Sourcen sind definitiv frei. Auf meinem lokalem System (IIS 5.1) funktioniert das und auf dem Server (IIS 6.0) bekomme ich die besagte Fehlermeldung. Wie gesagt, auf dem Server kann ich aber ohne weiteres Files erstellen und löschen, jedoch nicht verschieben. Hat jemand eine Idee?

Thema: UnauthorizedAccessException bei File.Move
Am im Forum: Web-Technologien

Hallo,

ich bekomme bei einer ASP.NET Webanwendung immer den Fehler "UnauthorizedAccessException: Access to the path is denied", wenn ich ein File verschieben möchte. Probiere ich das lokal aus, dann funktioniert das auch. Auch kann ich auf dem Server Dateien erstellen und löschen (ohne Probleme) - auch habe ich dem ASP.NET-User und dem IUSR die vollen Berechtigungen gegeben aber der Fehler kommt immer wieder (auch wenn ich ein komplett neuen Ordner auf dem Server erstelle - ich kann da einfach keine Dateien hinschieben). Die Dateieen sind nicht geöffnet, also die Resourcen sind frei. Was kann denn das sein? Kann mir jemand helfen?

Gruß

Thema: [erledigt] Constructor missing Fehler bei Reflection
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Vielen Dank. Es war noch ein kleiner Fehler drinnen. Die Lösung sieht nun so aus:

 public class MyThread : IThread {
    public void Run() {
      while(true) {
        Console.WriteLine("Thread is running ...");
        Thread.Sleep(1000);
      }
    }
  }
  
  public class Program {
    public static void Main() {
      try {
        Object serviceInstance = Activator.CreateInstance(typeof(MyThread));
        Type type = serviceInstance.GetType();
        MethodInfo methodInfo = type.GetMethod("Run");

        ThreadStart threadStart = (ThreadStart)Delegate.
          CreateDelegate(typeof(ThreadStart), serviceInstance, methodInfo);
        Thread thread = new Thread(threadStart);
        thread.Start();
      }
      catch(Exception ex) {
        Console.WriteLine(ex.GetType().FullName + ex.Message + ex.StackTrace);
      }

      Console.WriteLine("Exit");
      Console.ReadLine();
    }

Jetzt kann ich Thrads so benutzen wie in Java (ist halt schöner gekapselt)

Gruß

Thema: [erledigt] Constructor missing Fehler bei Reflection
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo "Kollegen",

folgender Quellcode:

public class MyThread {

    public MyThread() {

    }

    public void Run() {
      while(true) {
        Console.WriteLine("Thread is running ...");
        Thread.Sleep(1000);
      }
    }
  }
 
  public class Program {
    public static void Main() {
      try {
        Object serviceInstance = Activator.CreateInstance(typeof(MyThread).GetType());
        Type type = serviceInstance.GetType();
        MethodInfo methodInfo = type.GetMethod("Run");

        ThreadStart threadStart = (ThreadStart)
          Delegate.CreateDelegate(type, serviceInstance, methodInfo);

        Thread thread = new Thread(threadStart);
        thread.Start();

      }
      catch(Exception ex) {
        Console.WriteLine(ex.Message + ex.StackTrace);
      }

      Console.WriteLine("Exit");
      Console.ReadLine();
    }

Fehlermeldung (gleich in der ersten Zeile bei CreateInstance)

No parameterless constructor defined for this object

Ist es jetzt zu spät oder worauf stehe ich jetzt? Ich habe doch einen Konstruktor drinnen und bin da jetzt schon über eine Stunde drüber ... ich mag heute erst mal nicht mehr. Vielleicht kann mir jemand helfen oder morgen früh fällt es mir wie Schuppen von den Haaren.

Gute N8 und vielen Dank für evtl. Antworten

Thema: Kommunizieren mit Oracle
Am im Forum: Datentechnologien

Nochmals vielen Dank für eure Tips - ich glaube ich habe da einen 3/4 Tag verbraten, nur wegen dem Oracle. Problem war, dass ich vorher den DBVis installiert hatte mit dem JDBC-Treiber (jar) ... ist ratz fatz gegangen wie immer und dann kam C# dran ... ich habe da nix gefunden bis ich letztendlich völlig generft eine ODBC (ich brauche nur zwei Selects) eingebaut hatte - die ist dann auch nicht gelaufen, weil ich beim Oracle-Client das Passwort bei der Installation für den Dienst falsch eingegeben habe - aber die ODBC-verbindung ist gelaufen, nach Testbutton 8o .. d.h., wenn ich auf die referenziert hatte, dann ging es aus dem Programm nicht aber über ODBC mit dem Button Test Connection .. war wirklich verrückt - naja, jetzt wieder schnell zürück zu SQL-Server ... und danke nochmal für eure Antworten.

Thema: Kommunizieren mit Oracle
Am im Forum: Datentechnologien

Ich habe jetzt lokal den Client installiert und eine ODBC-Verbindung (ja, ODBC) eingestellt, mit dem Namen stillmms, das funktioniert auch (Test-Button) ... wie kann ich nun im Quellcode an diese Verbindung rankommen ... ich kriege das einfach nicht gebacken:

OdbcConnection connectin = new OdbcConnection("?????");

Ich habe schon allerhand ausprobiert und war natürlich auch schon auf http://www.connectionstrings.com

Danke für eure Hilfe schon einmal im Voraus

Thema: Kommunizieren mit Oracle
Am im Forum: Datentechnologien

OK, vielen Dank für Deine Ausführungen. Ich gehe jetzt einfach mal davon aus, dass Du Recht hast. Ich bekomme nun die Fehlermeldung ...

ORA-12705: Cannot access NLS data files or invalid environment specified

jetzt muss ich da wohl ein bißchen "rumsuchen", an was das liegt.

Thema: Kommunizieren mit Oracle
Am im Forum: Datentechnologien

Ich habe irgendwie das Gefühl, dass wir aneinander vorbei reden.

Gut, nehmen wir das Beispiel ODBC her ... bei jeder x-beliebigen Datenbank (SQL-Server, Acces, mysql) kann ich einen ODBC-Eintrag erstellen und dann auf die Datenbank zugreifen, jedoch geht das bei Oracle nicht so einfach - hier müssen dann Minimalinstallationen (lokal) durchgeführt werden um überhaupt an eine Oracle-Datenbank (im Netz) zu kommen - zumindest habe ich das bisher so verstanden. Oder habe ich das jetzt völlig falsch verstanden. Wenn das so einfach ist, was wähle ich denn dan aus, wenn ich eine neue ODBC-Verbindung erstellen will?

Thema: Kommunizieren mit Oracle
Am im Forum: Datentechnologien

aber da brauche ich doch den Client, oder etwa nicht? Bei einer ODBC-Verbindung brauche ich doch lokal (oder überall, wo die Anwendung laufen soll) einen Client, das ist doch mein Problem. Bei SQL-Server oder MySQL ist das ja kein Problem, bei Oracle jedoch schon - leider

Thema: Kommunizieren mit Oracle
Am im Forum: Datentechnologien

Ich habe mir jetzt den Instant Client gezogen. Hier habe ich die vier DLLs in mein Startup-Path copiert (oraociei11.dll, oci.dll, orannzsbb11.dll, oracci11.dll)

... dann im Code ...

OracleConnection oracleConnection = new OracleConnection();

        string CONNECTION_STRING =
          "User Id=bla;Password=bla;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.4.13)(PORT=1521))(CONNECT_DATA=(SID=stillmms)));";

        oracleConnection.ConnectionString = CONNECTION_STRING;
        oracleConnection.Open();

        oracleConnection.Close();

Jetzt bekomme ich die Fehlermeldung:

ORA-12705: Cannot access NLS data files or invalid environment specified

Was bedeutet dies? Ich möchte auf eine 9i-Datenbank, bzw. muss ich noch etwas lokal einstellen?

Thema: Kommunizieren mit Oracle
Am im Forum: Datentechnologien

.Vielen Dank - ich schaue da gleich mal rein ...
.
.
OK, sorry, ich habe da keinerlei Erfahrung.

Was muss ich da alles installieren?

Es gibt folgende Auswahlmöglichkeiten
Oracle Services For Microsoft Transaction Server
Oracle ODBC Driver
Oracle Provider for OLE DB
Oracle Objects for OLE
Oracle Data Provider for .NET

????

Ich habe jetzt mal Oracle Data Provider for .NET installiert. Was muss ich jetzt machen, bzw. wo bekomme ich nähere Informationen.

Hatte leider bisher mit Oracle nie etwas zu tun, wenn, dann nur mit Java und hier nur als Client - Datenbank war immer schon eingerichtet.

Gruß

Thema: Kommunizieren mit Oracle
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: Oracle 9
Hallo Kollegen,

ich habe jetzt schon mehrere Stunden damit verbracht, eine Lösung zu finden um einen "stink normalen Select" auf eine Oracle-Datenbank mit C# durchzuführen. Ich komme da einfach nicht weiter. Ich will nicht den Client installieren. Ich bekomme da keine einheitlichen Informationen. Gibt es denn sowas wie bei Java, wo ein ganz normales JAR-File als Client ausreicht. Leider komme ich hier mit der Suchfunktion auch nicht weiter. Was soll ich machen?

Mein Connectionstring (Java - JDBC) lautet: jdbc:oracle:thin:user/password@URL : PORT : SID

Thema: XML Schema Fragen
Am im Forum: Datentechnologien

Hallo "Kollegen",

ich bin jetzt nicht so tief drinnen in Schematas aber ich wollte einfach einmal nachfragen, ob es möglich ist bei Elementen, die Text enthalten (müssen) von vornherein zu prüfen, ob der Inhalt, nach einem Trim nicht ein Leerstring ist? Ist das mittels XSD möglich? Ich möchte keine (extra) Validierung durchführen und auf Empty nach einem Trim prüfen.

Die zweite Frage ist, ob man in einem Schema referenzieren kann. Mal angenommen ich habe 5 verschiedene Elemente (aus welchen Gründen auch immer) und die müssen alle gegen einen gleichen regulären Ausdruck laufen - muss ich dann dies wirklich explizit für jedes Element angeben oder gibt es da eine Möglichkeit der Referenzierung?

Danke schon einmal für eure Antworten.

Thema: Sortieren DataGrid
Am im Forum: Web-Technologien

@juetho,

ja, es handelt sich natürlich um ein GridView. Wenn ich das ganze für eine Spalte machen soll, dann ist das kein Problem, jedoch komme ich nicht weiter, wenn alle (oder meherer) Spalten sortiert werden können. Ich komme in dem Ereignis Sorting mit dem EventArgs-Objekt DataGridSortCommandEventArgs einfach nicht an die Spalte. Das ist mein Problem. Ich habe natürlich schon vorher im Web oder MSDN nachgesehen.

Gruß

P.S. Das Forum ist hier viel zu gut um zu "klagen". Ich wollte einfach nochmals nachfragen, so dass der Thread nicht ganz "untergeht".

Thema: Sortieren DataGrid
Am im Forum: Web-Technologien

Hat wirklich keiner eine Idee oder habe ich mich einfach nicht verständlich genug ausgedrückt? Das kann doch nicht sein, dass das Sortereignis auftritt, mit den jeweiligen Properties von Sortexpression und Sortdirection aber ich dann nicht auf den zu sortierenden Spaltenindex komme. Anybody?

Thema: Programm steuerbar über Website
Am im Forum: Web-Technologien

.NET Remoting, da werden Sie geholfen

Thema: Sortieren DataGrid
Am im Forum: Web-Technologien

Hallo "Kollegen",

ich stehe hier gewaltig auf dem Schlauch, und im Web habe ich auch schon ewig viel Zeit "verbraten". Wie komme ich denn bitte beim SortEreignis auf die zu sortierende Spalte? Wo ist da der Index? Was ich möchte ist "lediglich", alle Spalten vor- und rückwärts zu sortieren (das geht ja mit SortExpression und SortDirection) ... jedoch möchte ich bei allen Spalten die Sortiermöglichkeit anbieten, jedoch finde ich keinen Index im EventArg, welches bei mir so aussieht ...

protected void dgv_Sorting(object sender, GridViewSortEventArgs e) { ...

Wie kriege ich jetzt raus, welche Spalte es betrifft? Die Spalte brauche ich, weil ich ja die SortDirection setzen muss (dies geschieht nicht automatisch, die ist immer auf dem Default- bzw. Startwert).

Danke schon mal für etwaige Hilfe

Thema: [gelöst] Alias für Case-Selectstatement
Am im Forum: Datentechnologien

OK, für alle, die es interessiert, es gibt doch eine Lösung, die sieht dann so aus:

aus ....

SELECT o.liefernummer, 'sendungsnummer' =
  CASE
    WHEN d.sendungsnummer IS NOT NULL THEN d.sendungsnummer
    ELSE convert(varchar, u.sendungsnummer)
  END FROM [order] o

... wird
SELECT o.liefernummer,
  CASE d.sendungsnummer
    WHEN IS NOT NULL THEN d.sendungsnummer
    ELSE convert(varchar, u.sendungsnummer)
  END AS myAliasName
FROM [order] o

Thema: Designer für PDF-Vorlagen (Reports)
Am im Forum: Rund um die Programmierung

Gibt es auch eine Open-Source-Lösung? Ich brauche einfach nur ein paar Dokumente mit wenigen dynamischen Ersetzungen und ein kleines Image - mehr nicht.

Thema: Designer für PDF-Vorlagen (Reports)
Am im Forum: Rund um die Programmierung

Hallo "Kollegen",

ich suche einen Designer für Berichts- oder Reportvorlagen. Also ähnlich wie die Berichte in Access. Gibt es soetwas auch für C#? Ich möchte z.B. für eine Rechnung eine Vorlage erstellen (wenn möchlich mit einem Designer, da ich es dann anderen übergeben möchte und nicht immer im Quellcode die Positionierung anpassen) und die fehlenden Angaben werden dann hinzugefügt und daraus dann das fertige Dokument gedruckt, z.B. in PDF. Nun ist mir klar, dass es viele Lösungen gibt, programmiertechnisch, aber gibt es auch billige (oder Open Source) Designer um solche Templates erstellen zu können. Ich habe mal kurz gehört, dass man dazu Cristal Reports benutzen kann, kenne mich da aber nicht aus, bzw. weiss das nicht. Wie würdet ihr das Problem lösen, bzw. habt es in der Verganhenheit so gelöst? Danke schon mal für etwaige Antworten im Voraus.

Thema: [gelöst] Alias für Case-Selectstatement
Am im Forum: Datentechnologien

@Khalid,

vielen Dank! - dann mache ich eine View - dachte, dass man hier mit einem Alias draufgehen kann.

Gruß

Thema: [gelöst] Alias für Case-Selectstatement
Am im Forum: Datentechnologien

SQL-Server, Version 8-9

Wie kann ich für folgendes Statement in der Where-Klausel auf sendungsnummer zugreifen? Einen Alias bekomme ich nicht hin, da ich immer Fehlermeldungen bekomme (z.B. as bla)

SELECT o.liefernummer, 'sendungsnummer' = 
  CASE 
    WHEN d.sendungsnummer IS NOT NULL THEN d.sendungsnummer 
    ELSE convert(varchar, u.sendungsnummer)
  END FROM [order] o
LEFT OUTER JOIN ups u ON o.liefernummer = u.liefernummer
LEFT OUTER JOIN dtc d ON o.liefernummer = d.liefernummer
WHERE sendungsnummer ???

Ich möchte einfach auf das dynamische Feld in der Where-Klausel zugreifen. Das muss doch irgendwie gehen.
Danke schon mal für eure Hilfe.

Thema: Deadlocks Mehrbenutzer Datenbank
Am im Forum: Datentechnologien

Zitat von BerndFfm
Meinstest Du "definitiv NICHT" ?

Der SQL Server (und andere) bettet jedes Update und Insert Kommando in eine Transaktion.

Dead Locks (nicht mit der Frisur zu verwechseln, bei der man sich nie die Haare waschen muss) enstehen, wenn Prozess A auf die Beendigung von B wartet und B auf die Beendigung von A.

Einige DBMS erkennen Deadlocks und lösen diese nach einer gewissen Zeit auf, indem eine Transaktion rückgängig gemacht wird (das Opfer). Dies muss eigentlich in der Transaktion aufgefangen werden und die Transaktion muss erneut durchgeführt werden.

Man kann Dead Locks vermeiden, indem man Resourcen immer in der gleichen Reihenfolge sperrt.

Grüße Bernd

Sorry, ich meinte natürlich definitiv nicht ... ja, es ist halt in dem Uraltprogramm (das übrigens jetzt auch nicht ein "Starcoder" gemacht hat) keinerlei Exceptionhandling + Modularisierung + Transaktionen usw. drinnen. Ich hatte halt mal nachgefragt, da ich jetzt (noch) nicht so fit in VBA bin und ich dem Coder seine Logik noch nicht "durchstiegen" habe.

Thema: Deadlocks Mehrbenutzer Datenbank
Am im Forum: Datentechnologien

Ich habe jetzt mal nachgefragt, leider sind fast keine Leute mehr in meiner jetzigen Firma, die überhaupt wissen, was läuft. Ich habe jetzt in Erfahrung gebracht, dass es genauso sein kann, wie tscherno beschrieben, dass ein anderer Prozess ziemlich lang braucht um irgendswelche Positionen abzuarbeiten und dann fällt dieser "Pseudodeadlock". Ich muss da mal tiefer reinschauen (leider VBA :() ... und natürlich auch kein Exceptionhandling drinnen. Also, danke erst mal für die Antworten - ich werde in Zukunft, wenn ich es gelöst habe, dann nochmal einen Post hier reinstellen. Also, danke erst mal.

Thema: Deadlocks Mehrbenutzer Datenbank
Am im Forum: Datentechnologien

Moin,

eine VBA-Anwendung (in Access) greift auf einen SQL-Server (Version 8 ) zu. Die Fehlermeldungen lauten immer (leider auf deutsch):

Laufzeitfehler '-2147467259 (80004005)'

Die Transaktion (Prozess-ID 69) befand sich auf lock Ressourcen wegen eines anderen Prozesses in einer Deadlocksituation und wurde als Deadlockopfer ausgewählt. Führen Sie die Transaktion erneut aus.


Es wird definitiv (auch nicht mit anderen Programmen) mit Transaktionen und / oder Threads gearbeitet. Mir ist bisher nicht bekannt, dass eine Anwendung einen ähnlichen Fehler verursacht. An was kann das denn liegen, hat jemand eine Idee? Wie kann denn so eine, hm, ich sage jetzt mal "Pseudodeadlocksituation" entsteht?