![]() |
Datenbank: MSSQL • Version: 2017 • Zugriff über: FireDAC
MSSQL Fehler
Hallöle...8-)
Ich habe ein Tool was 365/24 läuft. In diesem Tool gibt es "Module". Beim Start des Tools werden verschiedene Connections (verschiedene DB) erstellt. Die Module verwenden die Connection die benötigt wird. Sporadisch kommt es bei einem Modul zu folgenden Fehlern: Zitat:
Zitat:
Delphi-Quellcode:
PS: Speicher in der Größe ist immer stabil.
// Work
function TModuleImportMailDatabase.GetWriteLastBelNumber:string; var Qry: TFDQuery; FBelNumber: string; begin Qry := CreateQuery; try Qry.SQL.Add(GetSQLByName('MODULE_IMPORT_MAIL_GET_BELART_LAST_NUMBER')); Qry.Open; if not Qry.Eof then begin FBelNumber := Qry.FieldByName('BelNummer').AsString; FBelNumber := IntToStr(StrToInt(FBelNumber) +1); Qry.Edit; Qry.FieldByName('BelNummer').AsString := FBelNumber; Qry.Post; end else FBelNumber := ''; finally result := FBelNumber; Qry.Close; Qry.Free; end; end; function TModuleImportMailDatabase.IsDataAvailable(AuftragNr: string; FilialNr: string): boolean; var Qry: TFDQuery; FSQL: string; begin Qry := CreateQuery; try FSQL := GetSQLByName('MODULE_IMPORT_MAIL_IS_DATA_AVAILABLE'); FSQL := StringReplace(FSQL, ':AUFNR', QuotedStr(AuftragNr), [rfIgnoreCase]); FSQL := StringReplace(FSQL, ':FILNR', QuotedStr(FilialNr), [rfIgnoreCase]); Qry.SQL.Add(FSQL); Qry.Open; if Qry.Eof then result := false else result := true; finally Qry.Close; Qry.Free; end; end; procedure TModuleImportMailDatabase.Write(Receipt: TSEAMTaskReceiptHead; var DatenOK: boolean); var Qry: TFDQuery; FBelNumber: string; function MaxLength(Value: string; Laenge: Integer): string; begin Result := Value; if Length(Result) > Laenge then begin Result := Copy(Result, 1, Laenge); end; end; begin Qry := CreateQuery; DatenOK := false; try //erst nachsehen, ob daten schon da if not IsDataAvailable(Receipt.STÖAuftragsNr, Receipt.STFilialNr) then begin Qry.SQL.Text := GetSQLByName('MODULE_IMPORT_MAIL_RECEIPT_INSERT'); FBelNumber := ''; FBelNumber := GetWriteLastBelNumber; Qry.ParamByName('pBelNummer').DataType := ftString; Qry.ParamByName('pBelNummer').AsString := FBelNumber; ... Qry.ParamByName('pAddDate').DataType := ftDateTime; Qry.ParamByName('pAddDate').Value := Receipt.AddDate; // D now Qry.ExecSQL; DatenOK := True; end; finally Qry.Free; end; end; PS: ![]() ...hat jemand Ideen? Danke. :wink: |
AW: MSSQL Fehler
Hmm, die Meldung gibt es in unterschieldichsten Kontexten:
![]() ![]() ![]() ![]() Das sieht doch eher nach einem servseitigen Problem mit den Ports aus, oder? |
AW: MSSQL Fehler
:wink:
Zitat:
Die Frage ist: Wer belegt die Ports? In einem Beitrag ist vor einer Software die Rede...irgend ein Treiber. Das war aber 2017. :gruebel: Das betreffende Modul schaut jede Minute in einen Ordner. Vieleicht haben die anderen Module keine Chance den gleichen Fehler zu werfen. :roll: |
AW: MSSQL Fehler
Moin,
Du gehst über einen ODBC Treiber, SQL Server Native Client 11.0 (Version 2011.110.7001.00). Ist das neu? Hast Du mal einen anderen ODBC versuch? Mit der Version 11 habe ich schon öfter Probleme gehabt, die ich mit der SQL Server (Version 10.00.19041.2130) nicht habe. Gruß |
AW: MSSQL Fehler
Liste der Anhänge anzeigen (Anzahl: 2)
Moin...8-)
heute morgen hatte ich wieder 2200 Mails gehabt...:cry: Es muß die Anwendung sein. Ein Neustart...alles wieder gut. :roll: Ich habe folgendes herausgefunden: ...es bestehen aktuell rund 12000 Connections. :shock: (Bild) Verstehen tue es nicht. :gruebel: Das Modul wird bei Ausführung mit der Datenbank erzeugt und wieder freigegeben.
Delphi-Quellcode:
:gruebel: Muß man vor dem Free die Connection explizit trennen? Ich dachte das mit dem Free das automatisch erfolgt.
constructor TTaskDatabase.Create(Preferences: TTaskPreferences);
begin FPreferences := Preferences; FConnectionE := CreateConnection(ctE); FConnectionM := CreateConnection(ctM); FConnectionW := CreateConnection(ctW); FConnectionD := CreateConnection(ctD); FCurrentConnectionType := ctE; end; destructor TTaskDatabase.Destroy; begin if Assigned(FConnectionD) then FConnectionD.Free; if Assigned(FConnectionW) then FConnectionW.Free; if Assigned(FConnectionM) then FConnectionM.Free; if Assigned(FConnectionE) then FConnectionE.Free; inherited; end; Nachtrag: Ich habe das Modul gefunden was mit jedem Durchlauf eine neue Connection erzeugt. :? (Standard = Bild2) |
AW: MSSQL Fehler
BTW:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz