Hallöle...
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:
Error Module: Import der Avis - [FireDAC][Phys][
ODBC][Microsoft][
SQL Server Native Client 11.0]
TCP-Anbieter: Ein Socketvorgang konnte nicht ausgeführt werden, da dem System Pufferspeicher fehlte oder eine Warteschlange voll war.
...danach
Zitat:
Error Module: Import der Avis - [FireDAC][Phys][
ODBC][Microsoft][
SQL Server Native Client 11.0]
TCP-Anbieter: Normalerweise darf jede Socketadresse (Protokoll, Netzwerkadresse oder Anschluss) nur jeweils einmal verwendet werden.
Der Quelltext (
DB Zugriff) ist von einem Kollegen "verzapft" worden.
Auch wenn ich manche Sachen anders gemacht hätte, ist da nichts wirklich auffälliges.
Delphi-Quellcode:
// 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: Speicher in der Größe ist immer stabil.
PS:
https://social.technet.microsoft.com...dowsserver16de...is das Einzige was ich gefunden habe. Ob das damit zu tun hat?
...hat jemand Ideen?
Danke.