Also - wir haben eine interne Firmendatenbank, die üblichen Dinge: Verwaltung von Kunden, Telefongesprächen, Verkaufsabschlüssen und Kundenvereinbarungen / -programmen.
Es ist ein Access 2000-Front-End und ein SQL Server 2000 Standard-Back-End. Ein einziger Server, zwei Xeon-Prozessoren mit 3,2 GHz, 2 GB RAM und Windows Server 2003 bieten den ganzen Tag über eine CPU-Auslastung von ca. 40%, verteilt auf die 4 für das Betriebssystem (HT) sichtbaren Kerne.
Die Back-End-Datenbank ist schlecht konzipiert und über 10 Jahre organisch gewachsen. Sie wird von weniger erfahrenen Personen verwaltet. Es ist schlecht normalisiert, und einige der offensichtlichen Probleme sind Tabellen mit Zehntausenden von Zeilen ohne Primärschlüssel oder Index, die auch in Verknüpfungen mit mehreren Tabellen für einige der am häufigsten verwendeten Teile des Systems verwendet werden (z. B. a Call Manager-Anwendung, die 8 Stunden am Tag auf dem zweiten Monitor eines jeden Benutzers sitzt und alle paar Sekunden eine große ineffiziente Abfrage ausführt).
Das Front-End ist nicht viel besser, es ist das typische Durcheinander von Hunderten von Formularen, verschachtelten gespeicherten Abfragen, schlecht geschriebenem Embedded SQL im VBA-Code, Dutzenden von "Macken" usw., und wann immer eine Änderung vorgenommen wird, scheint etwas, das nichts damit zu tun hat, zu brechen. Wir haben uns für eine MDB entschieden, die "gut genug" funktioniert, und haben jetzt eine unveränderte Richtlinie, da wir keine internen Access-Schwergewichte haben (und auch keine Pläne, eine zu engagieren).
Das Unternehmen wächst langsam, die Anzahl der Kunden, Anrufe usw. sowie die Anzahl der gleichzeitig angemeldeten Benutzer nehmen geringfügig zu, und die Leistung hat sich in letzter Zeit merklich verschlechtert (warten auf den Wechsel zwischen Formularen, warten auf das Auffüllen von Listen usw.) )
Perfmon sagt:
- Datenträgerübertragungen pro Sekunde: zwischen 0 und 30, durchschnittlich 4.
- Aktuelle Warteschlangenlänge: Schwebt um 1
Der SQL Server-Profiler sieht jede Minute Hunderttausende von Abfragen. Die CPU-Auslastung auf den Clients ist so gut wie Null, was darauf hinweist, dass serverseitige Abfragen ausgeführt werden müssen. Ich habe diese Arbeit über den DB Engine Tuning Advisor abgewickelt und seine Vorschläge auf eine Testsicherung angewendet, aber das hat nicht wirklich viel geändert.
Übrigens, wir haben eine Mischung aus 100 MB und Gigabit-Ethernet, alle in einem Subnetz, 40 ish-Benutzer auf zwei Etagen.
Zur Frage.
Meines Erachtens haben wir zwei Möglichkeiten, um diese Situation zu lösen / zu verbessern.
- Wir können es verschrotten und durch ein komplett neues CRM-System ersetzen, entweder nach Maß oder teilweise nach Maß
- Wir können die Lebensdauer dieses Systems verlängern, indem wir Hardware daran befestigen.
Wir können ein Intel i7-System mit verrückten Leistungszahlen für eine Größenordnung weniger Kosten als das Ersetzen der Software bauen.
Wenn ein neues System entwickelt wird, kann es auf dieser Box gehostet werden, sodass keine Hardware verschwendet wird. Ein neues CRM-System wird immer schlechter - ich sehe das erst nach einem Jahr.
Über Gedanken zu dieser Situation, insbesondere wenn Sie selbst hier waren, würden wir uns sehr freuen.
Vielen Dank