MSQL Server 2000 Probleme mit der Geschwindigekit
-
Hallo,
ich ahbe folgendes Problem. Ich habe ein Programm (MFC) geschrieben, welches daten aus einer Tabelle in eine Anderen hineinschreibt. die hintergründe dafür sind unwichtig.
nun mein problem die daten aus der zieltabelle liegen lokal auf meinem rechner zum testen nutze ich die MSDE 2000 auch lokal. die übernahme dauert ca. 7 min.
nun habe ich auf einem server im netzwerk , auf dem der MSQL SErver 2000 läuft meine datenbank importiert. nun habe ich mein programm erneut gestartet die quelldaten liegen immer noch auf meinem rechner. das programm braucht nun 1h 10min. ich habe nun die quelldaten auf den server gepackt. danach hat es 45 min gedauert.
die verbindung zur datenbank wird mitels odbc realisiert.
wie ist der große zeit unterschied zu erklären.der server war zu zeiten der datenübernahme nicht überlastet.
vielen dank
-
Eventuell eine Schlechte Netzwerkverbindung?!
-
An das habe cih auch schon gedacht aber warum dauert es immer noch so lange , wenn die daten auf dem server liegen ?
-
basti_1984 schrieb:
An das habe cih auch schon gedacht aber warum dauert es immer noch so lange , wenn die daten auf dem server liegen ?
Ok, dass schließt das natürlich wieder aus. Vielleicht müsste der Server mal wieder neu gestartet werden. Kann ja möglich sein das dort so viel läuft was den Ram vollgeknallt hat.
-
Baust du jedesmal eine neue Verbindung zum Server auf?
-
Unix-Tom schrieb:
Baust du jedesmal eine neue Verbindung zum Server auf?
Das wäre natürlich auch möglichkeit.
Läuft auf dem System ein Virenscanner?
-
Danke für die vielen Antworten,
also am Server wurde vor 2 wochen erst der speicher auf 4Gb aerhöht.
ich baue die Verbindung nur einmal auf und am ende wieder ab.
-
Okay alles zurück
TRACE("\n%s\n",sql_befehl); while (anzahl != "0" ) { TRACE("\n%s\n",anzahl); if (zeit2.wMinute - zeit.wMinute < 2 ) { CDatabase db; db.OpenEx(_T("DSN=Archiv;UID=ccarchiv;PWD=ccarchiv"),CDatabase::noOdbcDialog); CRecordset rc(&db); rc.Open(CRecordset::forwardOnly,_T(sql_befehl)); rc.GetFieldValue("anzahl",anzahl); rc.Close(); db.Close(); } if (zeit2.wMinute - zeit.wMinute == 10) break; GetLocalTime(&zeit2); }
Also ich schicke an die datenbank 3 befehle hintereinander. Danach muss ich aber prüfen ob die Tabellen geleert sind. Aus diesem Grund habe ich diese Schleife installiert.
kann das evtl. das problem sein ?
-
Du öffnest und schließt die Datenbank jedesmal in der Schleife. Das schlägt böse auf die Performance.
-
Also meinst du das das die Ursache sein könnte ? Warum habe ich lokal davon nichts gemerkt ? reicht es aus die Datenbank zu öffnen dann die Schleife reingehen und nach schleifenende die datenbank wieder beenden
wäre das richtig ?
-
basti_1984 schrieb:
reicht es aus die Datenbank zu öffnen dann die Schleife reingehen und nach schleifenende die datenbank wieder beenden
wäre das richtig ?So hätte ich das zumindest gemacht.
-
Guten Morgen Okay ich habe das jetzt verändert aber leider hat das keinen Erfolg gebraqcht. das programm braucht weiterhin 40 - 45 minuten
was kann ich noch machen
-
Startest du das Programm auf dem Server oder bei dir lokal?
Wenn du es lokal startest dann laufen alle Daten wieder über das Netzwerk.ms
-
Ich starte das Programm auf dem Server un d die Daten liegen auch auf dem Server