die Umgebung:
I3 Prozessor 3. Generation
8GB RAM
SSD Festplatte
WAWI ist die 1.0.11.5
MSSQL Express Datenbank 2012
Windows 7
Problem:
wenn wir den Shopabgleich starten oder der Worker diesen beginnt, dann dauert es je nach Rechner gefühlte Stunden, bis der Abgleich beginnt, wir sprechen von bis zu 2 Minuten, in dieser Zeit kann niemand in der Wawi an einem anderem Rechner oder dem gleichen Rechner arbeiten, da die DB wohl etwas beschäftigt ist. Wenn der Worker nun alle 5 Minuten startet, ist ein Arbeiten wohl nicht wirklich möglich.
Ich bin nun mit meinen beschränkten Windowsmöglichkeiten alles durchgegangen um zu schauen wo es klemmt.
Es hat den Anschein, dass es an zwei Querys liegt, die die Wawi vor dem Abgleich durchführt, die extrem lange brauchen bis sie fertig sind.
zum einen verursacht dies hier eine lange Wartezeit, was wohl an den angelegten Stücklisten liegt, das ist wohl in der Prozedur spZulaufShopAktualisieren zu finden:
zum anderen an dem hier was ja wohl ein trigger tgr_tartikel_Connector ist?:
Es kann auch sein da sich kompl. falsch liege, aber wir haben ein Problem. auf meiner Powerkiste kann ich das Problem nicht nachvollziehen, die zuckt nur kurz und legt los
Aber diese stehen in meiner Liste, ganz oben wenn ich das mit einem Query prüfe der mir die Top20 der längsten abfragen ausgibt.
I3 Prozessor 3. Generation
8GB RAM
SSD Festplatte
WAWI ist die 1.0.11.5
MSSQL Express Datenbank 2012
Windows 7
Problem:
wenn wir den Shopabgleich starten oder der Worker diesen beginnt, dann dauert es je nach Rechner gefühlte Stunden, bis der Abgleich beginnt, wir sprechen von bis zu 2 Minuten, in dieser Zeit kann niemand in der Wawi an einem anderem Rechner oder dem gleichen Rechner arbeiten, da die DB wohl etwas beschäftigt ist. Wenn der Worker nun alle 5 Minuten startet, ist ein Arbeiten wohl nicht wirklich möglich.
Ich bin nun mit meinen beschränkten Windowsmöglichkeiten alles durchgegangen um zu schauen wo es klemmt.
Es hat den Anschein, dass es an zwei Querys liegt, die die Wawi vor dem Abgleich durchführt, die extrem lange brauchen bis sie fertig sind.
zum einen verursacht dies hier eine lange Wartezeit, was wohl an den angelegten Stücklisten liegt, das ist wohl in der Prozedur spZulaufShopAktualisieren zu finden:
Code:
WITH LaufendeSumme AS
(
SELECT dbo.tStueckliste.kArtikel,
LaufendeSumme.dLieferdatum AS dLieferdatum,
CONVERT(INT, ((LaufendeSumme.lfd_Sum - dbo.tlagerbestand.fInAuftraegen) / tStueckliste.fAnzahl)) AS AnzahlStueckliste
FROM dbo.tStueckliste
JOIN dbo.tlagerbestand ON dbo.tlagerbestand.kArtikel = dbo.tStueckliste.kArtikel
JOIN
(
SELECT ( SELECT SUM(bestellungen.fMengeOffen)
FROM #LieferantenBestellungen AS bestellungen
WHERE bestellungen.dLieferdatum <= bestellungenRekursiv.dLieferdatum
AND bestellungenRekursiv.kArtikel = bestellungen.kArtikel
) lfd_Sum, bestellungenRekursiv.kArtikel, bestellungenRekursiv.dLieferdatum
FROM #LieferantenBestellungen AS bestellungenRekursiv
) AS LaufendeSumme ON LaufendeSumme.kArtikel = dbo.tlagerbestand.kArtikel
WHERE CAST (((LaufendeSumme.lfd_Sum - dbo.tlagerbestand.fInAuftraegen) / tStueckliste.fAnzahl) AS INT) > 0
)
--
-- Alle Stücklistenväter updaten, anhand der Verfügbarkeit der Kinder. Betrachtet werden die Kinder die zuerst alle Stückliste voll liefern können.
--
UPDATE dbo.tArtikel
SET dZulaufVerfuegbarAm = StuecklistenAnzahl.dLieferdatum,
nZulaufVerfuegbarMenge = StuecklistenAnzahl.AnzahlStueckliste
FROM dbo.tArtikel
CROSS APPLY
(
SELECT tStueckliste.kStueckliste AS kStueckliste,
CASE WHEN MIN(ISNULL(juengsterArtikel.AnzahlStueckliste, 0)) = 0
THEN NULL
ELSE MAX(juengsterArtikel.dLieferdatum)
END AS dLieferdatum,
MIN(ISNULL(juengsterArtikel.AnzahlStueckliste, 0)) AS AnzahlStueckliste
FROM dbo.tStueckliste
OUTER APPLY
(
SELECT TOP(1) LaufendeSumme.dLieferdatum,
LaufendeSumme.AnzahlStueckliste,
LaufendeSumme.kArtikel -- Wir brauchen von jedem Artikel nur den jüngsten eintrag
FROM LaufendeSumme
WHERE LaufendeSumme.kArtikel = dbo.tStueckliste.kArtikel
ORDER by dLieferdatum
) AS juengsterArtikel
WHERE dbo.tStueckliste.kStueckliste = dbo.tArtikel.kStueckliste
GROUP BY dbo.tStueckliste.kStueckliste
) AS StuecklistenAnzahl
WHERE dbo.tArtikel.kStueckliste > 0;
zum anderen an dem hier was ja wohl ein trigger tgr_tartikel_Connector ist?:
Code:
IF(EXISTS(SELECT i.cLagerAktiv
FROM INSERTED i
JOIN DELETED d ON i.kArtikel = d.kArtikel
WHERE i.cLagerAktiv = 'N' AND d.cLagerAktiv = 'Y'))
Es kann auch sein da sich kompl. falsch liege, aber wir haben ein Problem. auf meiner Powerkiste kann ich das Problem nicht nachvollziehen, die zuckt nur kurz und legt los
Aber diese stehen in meiner Liste, ganz oben wenn ich das mit einem Query prüfe der mir die Top20 der längsten abfragen ausgibt.