Kopieren der SQL Server Express-Datenbank auf einem Anderen Computer
Ich bin upsizing-back-end von einem client-Zugriff-app von morgen und müssen bereit sein, mit einem plan für ein bestimmtes problem mit diesem client. Der Chef muss in der Lage sein, um die Daten-Datei entfernt von dem Büro, wo der SQL-Server in regelmäßigen Abständen (meist monatlich), und führen Sie statistische Analysen auf die Daten.
Habe ich mir angeschaut Einfachsten kopieren Sie eine vollständige SQL server-Datenbank von einem server zum lokalen SQL Express, und die Lösungen, die es nicht in diesem Szenario funktionieren, weil:
-
nicht verwenden können, ein one-time-Lösung (Database Publishing Wizard), so muss dies skriptfähig.
-
kann nicht jede Methode verwendet werden, hängt von den beiden Computern vernetzt, so dass nicht eine option -- Daten werden übertragen über USB-Stick (also, keine Replikation).
-
kann nicht jede Methode verwendet werden, hängt davon ab, mit SQL Server management tools von der server-Konsole oder von der Arbeitsstation für die Sicherung.
-
kann keine Verbindung zur SQL Server-Datenbank direkt für die Analyse, weil die Daten portabel zu anderen Standorten.
Was ich denke, ich brauche eine Möglichkeit ein Skript aufrufen, das schafft eine backup-Datei, und kopieren Sie dann das Ergebnis auf dem USB-Laufwerk. Ich habe dann noch ein zweites script zum kopieren der backup-Datei vom USB-Laufwerk und es wieder auf die andere SQL-Server.
Die Daten transportiert werden, ist nur-lese - (oder jegliche änderungen, die nicht brauchen, um zurück auf die Haupt-server), und die Daten werden nicht aktualisiert in der zweiten Lage. Es ist derzeit gescriptet mit einem einfachen alten batch-Datei zum kopieren des back-end-MDB-Datei, und ich brauche etwas, das als einfach für den Benutzer.
Es kann keine Abhängigkeiten auf, sagen wir, Powershell (SQL Server Management Studio), weil ich nicht wollen, es zu sein installiert auf dem computer des Benutzers ausgeführt wird das Skript aus (es gibt ein halbes Dutzend Arbeitsstationen muss das Skript ausführbar sein, und ich will nicht etwas installieren, auf alle diese).
Werde ich einrichten des backup agent-erstellen Sie ein backup jede Nacht, so könnte ich vielleicht kopieren, die Datei ohne zu initiieren, die Sicherung vor dem kopieren. Also ich kann nur brauchen, um ein Skript für die Wiederherstellung auf dem Ziel-computer.
Gedanken, Vorschläge, Hinweise?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie auf jeden Fall in der Lage sein, etwas zu schaffen, wie die.
Einem Teil wäre ein T-SQL -
CREATE BACKUP
Skript als.sql
Skript, und führen Sie diese aus einem standard-Windows-batch (*.bat
) oder Befehl (*.cmd
) - Datei mithilfe dersqlcmd
Kommandozeilen-tool.Dass wäre so etwas wie dieses:
backup.sql
Den zweiten Teil wäre eine .sql-Datei mit einem T-SQL -
RESTORE
Skript, grundsätzlich Lesen sich die Daten aus einer bestimmten Position auf dem Datenträger und wiederherstellen es zu, dass der SQL Server-Instanz vorhanden.wiederherstellen.sql
Natürlich müssen Sie passen die Namen und die Pfade zu Ihren eigenen Anforderungen - aber das sollte nur einen Hinweis darauf geben, wie die ersten Schritte mit diesem Unterfangen.
Ausführen einer von denen .sql-Skript mithilfe von
sqlcmd
, brauchen Sie etwas wie:z.B.
Ressourcen:
Cannot open backup device 'C:\test.bak'. Operating system error 5(Access is denied.).
?Ich hatte das gleiche Problem Transport db zwischen Produktion (server) und test-Entwicklung (lokal, in einem anderen Ort) und auch den Transport von fertigen db-server gehostet.
Als es stellte sich heraus, ich kann nur den transport der .MDF von selbst.
Ich Mach das die ganze Zeit; funktioniert perfekt -- spart die Mühe des Transport eine große .ldf. (Ich benutze oft dropbox.com anstelle von einem Daumen-Laufwerk und verschlüsseln Sie die Datei mit PKZIP/SecureZip erste.)
Ich bin mir nicht sicher, was passiert, wenn Sie kopieren Sie die MDF mit dem server gestartet, obwohl ich nicht stoppen, bevor Sie kopieren. Ich bin mir nicht sicher, wie man diese skriptfähige -- Anhängen kann skriptfähig, aber ich bin nicht sicher löschen .LDF, bevor Sie fortfahren.
Könnten Sie ein Skript für den server, um einen snapshot-Kopie der Datenbank, dann der transport, das MDF zu wissen, dass es nicht aktualisiert wird.
Andere Idee - ein Programm schreiben, das einfügen aller Datensätze in eine SQL-Server-kompakte Ausgabe-Datei und transport? Ich habe es nicht probiert, aber darüber gelesen.
Nur ein Gedanke, aber wenn er derzeit geht Weg mit einer Kopie der MDB-Datei mit allen Daten in nur für sich selbst, warum dann nicht so weitermachen wie. Sie könnte einfach tun es alle in access mit einer Abfrage für jede Tabelle.
Wenn dir das setup deine "Berichterstattung" MDB mit den Tabellen verknüpft und als "tblFoo_LINKED" und eine lokale Tabelle namens "tblFoo" Sie könnten dann führen Sie einfach ein wenig VBA-code, der die Schleife über alle Tabellen, und führen Sie so etwas wie
Den SQL server-Sicherung wiederherstellen wäre noch die Möglichkeit, würde ich gehen, aber nur mit eine andere spin auf die Dinge, die passen könnte Ihre Bedürfnisse
Warum nicht weiterhin das kopieren der gesamten Datenbank-Datei? Das liest sich wie eine kleine genug Betrieb, um sich mit einer augenblicklichen pause: Sie können die Datenbank verkleinern, abtrennen und kopieren Sie die Dateien direkt. Auf dem Ziel-system, können Sie befestigen Sie die SQLExpress DB von file name in der Verbindungszeichenfolge.