Backup aus Access mit T-Sql erstellen

Hi,

ich sagte ja auch in der Entwicklung im Betrieb nicht. Ich will es auch nicht verallgemeinern, aber mir ist es regelmäßig passiert in der Entwicklung. Woran das lag, weiß ich nicht vielleicht an der ODBC Verbindung. Im Access Forum war da auch schon mal die Rede von.
Wie ein Blitz aaus heiterem HImmel hörte Access plötzlich auf und legte automatisch eine Backupdatei an. Von denen hatte ich ca. 30....

MfG

Martin
 
Werbung:
HI,

nochma eine Fragel zu der Performance:

Ich habe hier zu Hause Glasfaser mit einer Geschwindigkeit von gemessenen 420 mbps auf dem Server. Im Studio sind es nur 111 mbps. Wenn man im Studio auf die maximal mögliche Größe von 250 mbps aufrüstete, könnte sich dann die Performance deutlich verbessern?

Danke für Hilfe
 
Zum Start der Sicherung aus Access heraus nebenbei bemerkt. Jedes Script, Batch, externes Programm, cmd, usw. lässt sich doch über einen Shell-Befehl in VBA starten.
Zur Umstellung von 32 auf 64 bit ist zu sagen: Probleme tauchen meistens durch Windows-API-Aufrufe auf. Dort kann es reichen wenn man in der Declare Anweisung PTRSAFE einbaut um den Adressraum für die Variablen anzupassen.
Weitere Probleme kann es geben wenn alte ocx-Module verwendet werden, für die es noch kein 64-bit-Pendant existiert.
Viele Grüße
Andreas
 
HI,

nochma eine Fragel zu der Performance:

Ich habe hier zu Hause Glasfaser mit einer Geschwindigkeit von gemessenen 420 mbps auf dem Server. Im Studio sind es nur 111 mbps. Wenn man im Studio auf die maximal mögliche Größe von 250 mbps aufrüstete, könnte sich dann die Performance deutlich verbessern?

Danke für Hilfe

Das Problem ist die Latenz und nicht die Bandbreite.

Bandbreite (mbps) ist z.B. eine zweispurige Strasse oder eine sechs Spurige Strasse.
Latenz ist die Maximale Geschwindigkeit z.B. 100 kmh oder 200 kmh.

Wenn du deine Autobahn von 2 Spuren (100 mbps) auf 4 Spuren (250 mbps) erhöhst, aber immer noch eine Geschwindigkeitsbegrenzung von 100 kmh gibt hast du hier weiterhin solche Probleme.
Bei einem Download können alle Autos hintereinander und parallell fahren, bei einer DB Anfrage fährt immer nur ein Auto nach dem anderen.


Du kannst einmal ein Ping Ausführen:
Antwort von xx.xx.xx.xx: Bytes=32 Zeit=13ms TTL=58
Das ist deine Latenz.

In einem Lokalen Netzwerk ist diese idR bei unter 1ms.
 
Ich kümmer mich jetzt zunächst mal um das Backup-Restore Geschäft, was wohl mit SSMS durchgeführt wird.
Mach das bitte automatisiert.
Ich habe hier zu Hause Glasfaser mit einer Geschwindigkeit von gemessenen 420 mbps auf dem Server. Im Studio sind es nur 111 mbps. Wenn man im Studio auf die maximal mögliche Größe von 250 mbps aufrüstete, könnte sich dann die Performance deutlich verbessern?

Danke für Hilfe
Selbstverständlich könnte sich die Performance deutlich verbessern. Wenns ins Budget passt, mach das auf jedenfall. Besser haben als nicht haben.
 
Danke t-sql!

ok, wir werden jetzt die mbps erhönen der Preis dafür ist unwesentlich höher. Das ist die Lösung mit dem geringsten Aufwand.
Ich war lange Jahre in einem großen IT-Unternehmen beschäftigt und habe gelernt, das bei Performance Problemen zunächst mal Ruhe bewahren angesagt ist. Dann muss man sehen, welche Schrauben es gibt, an denen man drehen und welche Seiteneffekte das haben kann.
Dann sollte man auch nicht an allen Schrauben gleichzeitig drehen, sondern one by one.

Ich werde berichten!

Und danke für eure Beitrage!

Martin

P.S. Heute macht meine NAS Synology Zicken...es hört nie auf!
 
Hi,

ich möchte das usprüngliche Thema nochmal aufgreifen:
Absetzen von sqlcmds für z.B. Backups.
In der Entwicklungsumgebung klappt das wunderbar ich kann aus Access heraus über ein shell Befehl sqlcmd Komandos absetzten.
Aber auf dem Server rührt sich da gar nichts, die Ergebnis Datei ist leer:

sqlcmd -S .\ -i C:\DbAdcServer\sqls\Sicherung\Produktionbackup.sql -o C:\DbAdcServer\Returns.sql

Ich habe mit sqlcmd --version getestet und es wird mit die Version v1.8.0 abgezeigt, die ich vorher mit

winget install sqlcmd

installiert hatte.

Der Backupbefehl in der Datei klappt direkt auf dem Server auch problemlos.

Hat jemand eine Idee?

Thanx

Martin
 
weil das in SQLEXPRESS nicht geht.
Außerdem werden die Backups nicht immer regelmäßig gemacht.
Wie gesagt klappt das in der Enzwicklungsumgebung wunderbar, ein Button ein Klick, fertig.
Auch das Befüllen anderer Datenbanken über Backup-Restore habe ich automatisiert, ein Klick, fettig.

Irgendwo ein Häkchen vergessen?
 
weil das in SQLEXPRESS nicht geht.
Außerdem werden die Backups nicht immer regelmäßig gemacht.
Wie gesagt klappt das in der Enzwicklungsumgebung wunderbar, ein Button ein Klick, fertig.
Auch das Befüllen anderer Datenbanken über Backup-Restore habe ich automatisiert, ein Klick, fettig.

Irgendwo ein Häkchen vergessen?
Klicken ist manuell und kein Automatismus. Mit den dbatools kannst du problemlos über den Taskscheduler deine Datenbank regelmäßig sichern.
 
Hi,

danke für die Antworten.
Erlaubt mir, es etwas näher zu erklären.

Es gibt keinen Grund gegen regelmäßige Sicherungen, nur es reicht nicht. Ich werde es mir ansehen.
In der Schule werden monatlich Lastschriften von den Kunden eingezogen.
Dabei werden massiv neue Umsätze erzeugt und Verträge angepast.
Es ist sinnvoll, davor eine Sicherung zu machen, weil viele Daten dadurch verändert werden.
Dieser Termin ist aber nicht immer am Fr sondern kann irgendwann sein.
Ebenfalls können neue Kurse entstehen wodurch sich sehr viele Daten ändern, auch davor ist eine Sicheung sinnvoll.
Es muss also eine Möglichkeit geben, eine Sicherung "außerhalb der Reihe" zu machen.

Natürlich kann man das im SSMS machen, aber bitte verstehe, das die Bedienerinnen der Software nicht EDV-affine sind.
Sie hassen es, ihre Access-Oberfläche zu verlassen zu müssen.,
Wenn ich ihnen sage, ihr müßt euch bei SSMS anmelden und dort 5 Klicks machen oder ich biete an, nur einen Klick im Access-Fe...
Sie werden mir um den Hals fallen...
Technisch ist es ja möglich, Ich habe eine Entwicklungsumgebung auf meinem lokalen Rechner, da klappt es wunderbar:

Ich klicke auf "backup" und erzeuge ein SqlCmd, was dann einem shell Command übergeben wird. Darin ist dann das eigentliche Backup-Statement, wie oben beschrieben.
Ich werte dann den Output aus und merke mir die Filenumber in einer kleinen Tabelle, die ich für Restore-Funktionen nutze, wo die FILE-Numme benötigt wird.
Das wird man sicherlich auch über eine Systemtabelle rausfinden können, aber die sind mit zu kompliziert...

Dann habe ich neben der Produktion noch eine weitere Umgebung aufgebaut: Sandbox.
Dort kann man die Produktionsdaten rein kopieren und beliebig Dinge austesten, ohne die echte Produktion zu gefährden.
Ich habe einen Button in der Access-Oberfläche der da heißt: "fill Sandbox from Produktion" und zack wird der aktuelle Produktionsbestand dorthin kopiert iund sie können sich dort anmelden und spielen. Wunderbar!
Intern gelöst durch Backup von Produktion und Restore von dem Prod-Backup

Wie gesagt, das sind alles Dinge, die man auch im SSMS machen kann, aber ein Oberflächenbruch ist immer schlecht.

Ich habe es ja alles in der Entwicklung, mit einer lokalen DB-Installation, am laufen, nur frage ich mich, warum es auf dem Server nicht läuft, obwohl ich da auch lokal angemeldet bin.

Die Frage ist also: warum kann ich in der Entwicklunsumgebung sqlcmd Befehle absetzen, nur in der Produktin nicht, obwolh iah an beiden lokal angemdeldet bin und admin-Rechte habe.


Ich hoffe, ich konnte mich ausreichend erklären...

Danke für das Interesse!

Martin
 
Zuletzt bearbeitet:
Ist möglicherweise ein Berechtigungsproblem. Der SQL-Service läuft unter einem bestimmten Benutzer. Der muss:
a) Zugriff auf das Zielverzeichnis des Backups haben.
b) der aufrufende Benutzer berechtigt sein Backups durchzuführen.
  • Das hängt dann davon ab ob du dich aus Access heraus mit einem SQL-Benutzer oder mit dem Windows User am Server authentifizierst.
Falls du nicht im Sicherungsmodus "Full" bist kannst du auch den Schalter "WITH COPY_ONLY" behelfen damit die Transaktionskette nicht unterbrochen wird.
Copy-only backups - SQL Server
 
Werbung:
Falls du nicht im Sicherungsmodus "Full" bist kannst du auch den Schalter "WITH COPY_ONLY" behelfen damit die Transaktionskette nicht unterbrochen wird.
Copy-only backups - SQL Server
Dann ist aber COPY_ONLY überflüssig weil ja keine Transaktionskette da ist. Außer natürlich noch bei bulk-logged was hier ganz sicher nicht genutzt wird und bei Simple brauchste kein COPY_ONLY.
 
Zurück
Oben