Aktivieren Sie SQL Server zum Sichern auf Remote-Rechnern/Laufwerken

Aktivieren Sie SQL Server zum Sichern auf Remote-Rechnern/Laufwerken

Ich habe einen SQL Server (2000, 2005 und 2008) und möchte SQL Agent (oder sogar eine einfache Sicherungsdatenbank „xxx“ auf Festplatte = „yyy“) verwenden, um Sicherungen auf Remote-Laufwerken durchzuführen.

D. h.: Ich habe ein zugeordnetes Laufwerk in der SQL-Maschine, zum Beispiel: „M:“, das \\otherbox\someshare zugeordnet ist.

Standardmäßig erlaubt SQL Server keine Sicherungen auf solchen Laufwerken, aber ich glaube, es gibt eine Möglichkeit, dies zu aktivieren. Kann mir jemand die Dokumentation zeigen?

Dank im Voraus.

Antwort1

Verwenden Sie den UNC-Pfad, wenn Sie das Ziel angeben – der SQL-Agent verfügt nicht über ein Konzept von „zugeordneten“ „Laufwerken“.

Außerdem wird SQL Agent normalerweise als „Lokaler Dienst“ oder „Lokales System“ ausgeführt und verfügt daher nicht über Rechte für Remotefreigaben auf anderen Computern.

Sie haben mehrere Möglichkeiten:

  • Führen Sie SQL Agent als Rollenkonto in der Domäne aus. Erteilen Sie diesem Konto Schreibberechtigung für das Verzeichnis/die Freigabe, in dem/der die Sicherungen gespeichert werden sollen.

  • Führen Sie SQL Agent als „Netzwerkdienst“ aus. Die Authentifizierung gegenüber dem Freigabeserver erfolgt mit dem Domänencomputerkonto des Computers, auf dem der Dienst ausgeführt wird. Erteilen Sie diesem Konto die Schreibberechtigung für das Verzeichnis/die Freigabe, in dem/der das Backup gespeichert werden soll.

  • Wenn Sie keine Domäne 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/der die Sicherung gespeichert werden soll. (Die „Domäne des armen Mannes“...)

Antwort2

Ich stimme beiden Antworten zum UNC-Pfad voll und ganz zu.

Ich möchte auch hinzufügen, dass Sie selbst bei zugeordneten Laufwerken einen einfachen Workaround haben. Sie können ein Backup auf einem beliebigen normalen Laufwerk Ihres Servers durchführen. Und dann können Sie hinzufügen

xp_cmdshell 'XCOPY [source] [destination] \flags'

SQL-Befehl für den Job oder das SQL-Skript, das Sie ausführen.

Mit xp_cmdshell können Sie noch mehr tun – beispielsweise ein externes Archivierungs-Befehlszeilentool wie 7z ausführen, um die Datei zu komprimieren, bevor Sie sie auf das zugeordnete Laufwerk kopieren (wenn die Remote-Verbindung zu langsam ist …)

PS: Ich habe vergessen zu erwähnen, dass xp_cmdshell mithilfe des Surface Area Configuration-Tools und durch Ausführen von sp_configure aktiviert und deaktiviert werden kann (und standardmäßig deaktiviert ist).

Antwort3

Wenn SQL Server nicht unter einem Domänenkonto ausgeführt wird, können Sie ein Netzlaufwerk für das SQLServer-Konto (nicht Ihr Konto) zuordnen, wie in diesem beschriebenStackoverflow-Antwort

Zuerst müssen Sie xp_cmdshell aktivieren

-- allow changes to advanced options 
EXEC sp_configure 'show advanced options', 1
GO
-- Update currently configured values for advanced options.
RECONFIGURE
GO
-- To enable xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1
GO
-- Update currently configured values for advanced options.
RECONFIGURE
GO

Anschließend können Sie ein Laufwerk mit folgendem Verfahren zuordnen:

EXEC xp_cmdshell 'NET USE Z: \\Srv\Path password1 /USER:Domain\UserName'

Schließlich können Sie auf diesem zugeordneten Laufwerk ein Backup erstellen:

BACKUP DATABASE myDB TO DISK = 'z:\file.bak'

Antwort4

Bedenken Sie dabei, dass SQL Server sehr intolerant gegenüber Netzwerkverzögerungen ist. Wenn sie auftreten (und das ist häufig der Fall), schlägt die Sicherung fehl. Ich empfehle diese Vorgehensweise für Produktionsumgebungen überhaupt nicht.

Besser lokal sichern und dann kopieren.

verwandte Informationen