Ich habe einen SQL Server (2000, 2005 und 2008) und möchte SQL Agent (oder sogar eine einfache Sicherungsdatenbank 'xxx' auf Festplatte = 'JJJ') verwenden, um auf Remote-Laufwerken zu sichern.
Dh: Ich habe ein zugeordnetes Laufwerk in der SQL-Maschine, zum Beispiel: "M:", das \\ otherbox \ someshare zugeordnet ist
Standardmäßig erlaubt SQL Server nicht, auf solche Laufwerke zu sichern, aber ich denke, dass es eine Möglichkeit gibt, dies zu aktivieren. Kann mich jemand auf die Dokumente verweisen?
Danke im Voraus.
sql-server
backup
mappeddrive
Martin Marconcini
quelle
quelle
Antworten:
Verwenden Sie den UNC-Pfad, wenn Sie das Ziel angeben. Der SQL-Agent hat kein Konzept für "zugeordnete" "Laufwerke".
Außerdem wird SQL Agent normalerweise als "Lokaler Dienst" oder "Lokales System" ausgeführt und hat daher keine Rechte für Remotefreigaben auf anderen Computern.
Sie haben mehrere Möglichkeiten:
Führen Sie SQL Agent als Rollenkonto in der Domäne aus. Gewähren Sie diesem Konto die Berechtigung, in das Verzeichnis / die Freigabe zu schreiben, in dem die Sicherungen gespeichert werden sollen.
Führen Sie SQL Agent als "Netzwerkdienst" aus. Es wird beim Freigabeserver mit dem Domänencomputerkonto des Computers authentifiziert, auf dem der Dienst ausgeführt wird. Gewähren Sie diesem Konto die Berechtigung, in das Verzeichnis / die Freigabe zu schreiben, in dem die Sicherung gespeichert werden soll.
Wenn Sie keine Domain haben, erstellen Sie ein Konto mit demselben Benutzernamen und Kennwort sowohl auf dem Computer, auf dem SQL Agent gehostet wird, als auch auf dem Computer, auf dem die Sicherungsdateien gehostet werden. Ändern Sie SQL Agent so, dass es als dieses "Rollen" -Konto ausgeführt wird, und erteilen Sie diesem Konto die Berechtigung, in das Verzeichnis / die Freigabe zu schreiben, in dem bzw. dem die Sicherung gespeichert werden soll. (Die "Domäne des armen Mannes" ...)
quelle
Ich stimme beiden Antworten zum UNC-Pfad voll und ganz zu.
Ich möchte auch hinzufügen, dass Sie selbst mit zugeordneten Laufwerken eine einfache Problemumgehung haben. Sie können eine Sicherung auf jedem normalen Laufwerk Ihres Servers durchführen. Und dann können Sie hinzufügen
SQL-Befehl für den Job oder das SQL-Skript, das Sie ausführen.
Mit xp_cmdshell können Sie noch mehr tun - zum Beispiel ein externes Archivierungsbefehlszeilentool wie 7z ausführen, um die Datei zu komprimieren, bevor Sie sie auf das zugeordnete Laufwerk kopieren (wenn die Remoteverbindung zu langsam ist ...).
PS: Ich habe vergessen zu erwähnen, dass xp_cmdshell mithilfe des Oberflächenkonfigurationstools und durch Ausführen von sp_configure aktiviert und deaktiviert werden kann (und standardmäßig deaktiviert ist).
quelle
Ihr Agent benötigt Zugriff auf die Netzwerkfreigaben. Sie müssen nicht vorher zugeordnet werden.
Du machst es so:
Ich glaube, wenn der Benutzer, dem der Job gehört, ein SQL-Systemadministrator ist, wird er unter dem Agenten ausgeführt, andernfalls wird er als Nicht-Systemadministrator ausgeführt.
quelle
Wenn SQL Server nicht unter einem Domänenkonto ausgeführt wird, können Sie ein Netzwerklaufwerk für das SQL Server-Konto (nicht Ihr Konto) wie in dieser Antwort zum Stapelüberlauf beschrieben zuordnen
Zuerst müssen Sie xp_cmdshell aktivieren
Dann können Sie ein Laufwerk mit folgenden Elementen zuordnen:
Schließlich können Sie auf diesem zugeordneten Laufwerk sichern:
quelle
Beachten Sie hierbei, dass SQL Server Netzwerkverzögerungen nicht toleriert. Wenn sie auftreten und dazu neigen, schlägt die Sicherung fehl. Ich empfehle diese Vorgehensweise überhaupt nicht für Produktionsumgebungen.
Besser lokal sichern und dann kopieren.
quelle
Am einfachsten ist es, über die Datenträgerverwaltung ein .vhd-Laufwerk auf einer Netzwerkfreigabe zu erstellen und ihm einen Laufwerksbuchstaben zuzuweisen. SQL kann ohne Änderungen auf dieses Laufwerk zugreifen.
Fügen Sie dem Scheduler beim Booten einfach ein Skript diskpart.exe hinzu, um es beim Neustart automatisch anzuhängen.
Beispiel: Wählen Sie vdisk file = "\ {IP-Adresse / Server} {Netzwerkfreigabe} {Dateiname.vhd}". Anhängen von vdisk // speichert den zuletzt zugewiesenen Laufwerksbuchstaben.
quelle