Netzwerk anfänger :D

Hallo, ich habe ein kleines Problem, wo uns unsere IT-Abteilung leider auch nicht weiterhelfen kann.
Undzwar habe ich eine MultiUser Datenbank auf unserem Server liegen. Nun wollte ich fragen ob es möglich ist über eine .bat-Datei oder einem Script das Access Programm bei allen usern zubeenden, so das ich den Exklusiven Zugriff auf die Datei erhalte um anschließend ein Komprimierungsscript laufen lassen kann.

Also kurz und Knapp nochmal: Das Programm haben viele user offen, soll vom Server zur Uhrzeit XYZ bei allen Usern geschlossen werden.

Vielen Dank und ein schönen Tag noch

Fizzo361

moin moin,

Hallo, ich habe ein kleines Problem, wo uns unsere
IT-Abteilung leider auch nicht weiterhelfen kann.
Undzwar habe ich eine MultiUser Datenbank auf unserem Server
liegen.

Welches Betriebssystem?

Nun wollte ich fragen ob es möglich ist über eine

.bat-Datei oder einem Script das Access Programm bei allen
usern zubeenden,

nö, aber alle noch verbundenen Nutzer/aktiven Verbindungen trennen

so das ich den Exklusiven Zugriff auf die

Datei erhalte um anschließend ein Komprimierungsscript laufen
lassen kann.

Welches Programm (SQL o. Oracle wäre es relativ wurscht, also vermute ich mal Access) welche Version???

cu Tom

HI Tom, vielen dank :smiley:

Welches Betriebssystem?
auf dem IT-Server weiß ich nicht, auf den Desktop-PC ist Win7 installiert

„nö, aber alle noch verbundenen Nutzer/aktiven Verbindungen trennen“
wie bekomme ich das den herraus wer gerade noch ein aktiver User ist?

Jap Access 2010

Vielen dank für deine Hilfe hoffe

Hallo,

Welches Betriebssystem?
auf dem IT-Server weiß ich nicht,

Nichts für ungut, aber die Voraussetzungen, dass ausgerechnet Du offenbar auf der Arbeit an Multi-User Datenbanken herumschraubst halte ich nicht für sonderlich günstig.

Die Gefahr, dass Du einen Schaden im nicht-privaten Umfeld verursachst erscheint mir recht groß .

Laß es unter den Bedingungen (auch zu Deinem eigenen Schutz) bleiben.

Sebastian

Hmm naja ansich würde ich auch gern die aufgabe abgeben, allerdings meint mein chef ich soll eine lösung finden… Ich bin eigentlich nur für Access Programmierungen hier tätig…

Gibt es nicht eine art bat-Datei welche die aktiven User von der Anwendung kickt in der art wie ein Jam-Signal :wink:
Die bat für das Komprimierungsscript is ja bereits fertig.

Und mit einer zusammenarbeit unserer IT hoffe ich einfachmal das wir ein weg finden

MfG
Fizzo361

Hi,

Gibt es nicht eine art bat-Datei welche die aktiven User von
der Anwendung kickt in der art wie ein Jam-Signal :wink:
Die bat für das Komprimierungsscript is ja bereits fertig.

WENN du administrativen Zugriff auf alle PCs hast und
WENN du genau weißt, welche Prozesse du auf den einzelnen PC stoppen musst,
DANN könntest du z.B. mit Taskkill (sysinternals) dein gewünschtes Ergebnis erreichen.

Aber: keiner kann dir genau sagen, was mit der Datenbank passiert, wenn z.B. ein Benutzer just in dem Moment Daten ändert, in dem du ihm remote sein MS-Access unter dem Arsch wegziehst.

Grundsätzlich finde ich es gruselig, dass immer noch im nicht-privaten Umfeld reine Access-Datenbanken von mehreren PCs betrieben werden, ohne eine halbwegs anständige SQL-Engine als Backend. Dafür ist Access nicht geschaffen (egal was der MS-Vetrieb gerne behauptet). Man muss sich dann auch nicht wundern, warum man in solche Probleme rennt.

Einfach ein MySQL drunter gelegt (kostet nichts), oder sogar ein MS-SQL Express (kostet außer Nerven auch nichts) und man hat eine echte Multiuser-Umgebung, die den Namen auch verdient.

Gruß
Stefan

P.S.: So richtig viel mit „Netzwerktechnik“ hat deine Frage ja nicht zu tun, aber egal… :wink:

Re^3: Netzwerk anfänger :smiley:
moin,

da wir jetzt nicht die Server-Version wissen erstmal n bissel Lesestoff für nen
Windoof-Server
http://msdn.microsoft.com/de-de/library/dd260014%28v…

cu Tom

Ahoi!

al ganz provokant:

so das ich den Exklusiven Zugriff auf die Datei erhalte

wozu?

um anschließend ein Komprimierungsscript laufen lassen kann.

zu welchem Zwecke?

Also kurz und Knapp nochmal: Das Programm haben viele user offen, soll vom Server zur Uhrzeit XYZ bei allen Usern geschlossen werden.

Kannst du XYZ etwas genauer eingrenzen?

Wenn es „nur“ um ein Backup geht:
Legs mitten in die Nacht, wenn keiner mehr arbeitet, sollten dennoch offene Verbindungen bestehen, so stören die nicht, wenn du die Datenbank selber nicht änderst. Also, nur in eine Kopie komprimierst.

Ich hab mir seinerzeit für’s tägliche Backup auch den Kopf zerbrochen, dann aber festgestellt, das es keinen Unterschied macht.

lg, mabuse

Nur um mal die Frage zu beantworten …
Hi …

an sich ist das nur eine programmiertechnische Fingerübung. Ich mach mir jetzt nicht die Mühe, den Code zu schreiben und zu testen, aber ich denke, Du kommst mit folgenden allgemeinen Anweisungen klar. Werkzeug: Windows Script Host (WSH) und WMI. Statt dem WSH kannst Du auch so ziemlich jede andere vernünftige Programmiersprache verwenden, ja, auch Powershell :smile:

Mit DOS Batches würde ich mich nicht abgeben. Nicht dass man damit nicht auch remote Prozesse killen könnte (z.B. mit dem rkill Tool), aber die Steuerung (Liste von Computern irgendwo abgreifen, abarbeiten, kill Befehl senden, Fehlerbehandung) ist in einer Batch so absurd kompliziert und vom Ergebnis her bestenfalls gerade so lauffähig, dass man damit keinen Blumentopf gewinnen kann.

Also wohlan, wsh code:

Erst mal zum Remote-Computer verbinden.

Set objLocator = CreateObject( „WbemScripting.SWbemLocator“ )
Set objWMIService = objLocator.ConnectServer („DerComputerName“, „root/cimv2“, „DerDomainName\EinemAdminUserSeinName“,„EinemAdminUserSeinPasswort“ )
objWMIService.Security_.impersonationlevel = 3

Dann alle Prozesse auflisten …

For Each objProcess in objWMIService.ExecQuery((„Select * From Win32_Process“)
strProcessName = objProcess.Name
If instr(UCase(strProcessName),„ACCESS.EXE“) Then
objProcess.Terminate
Next

Soweit ist das keine Kunst. Prozesse terminieren ist also keine große Sache. Das Terminieren ist übrigens gleich wie wenn jemand Access regulär mit dem „Fenster schließen“ Button zumacht, Datenverluste würde ich nicht befürchten, denn das Schließen von Access muss eine Access Datenbank aushalten.

Das wirkliche Kunststück ist, die Namen aller laufenden Computer auflisten zu lassen, um dann strComputer mit einer Schleife drüberlaufen zu lassen. Eine Liste der eingeschalteten Compute gibt es in einem Microsoft Netz leider nicht, also musst Du Dir so helfen dass Du entweder eine Liste bekannter Computer die die Datenbank nützen können hinterlegst und pflegst, oder - wenn ihr ein Active Directory habt - die Liste aller im AD bekannten Computer rausziehst (das geht mit nicht mehr als 5 zeilen Codeaufwand über die ADSI Schnittstelle). Dann läufst Du durch die Liste und fängst nicht angeschaltete Computer per Fehlerbehandlung ab. Sofern es nicht um tausende Computer geht wird das ganz gut funktionieren.

Und eine IT Abteilung, die sowas nicht zustande bringt soll sich eingraben lassen-

Gruss Armin.