Ich habe einen Microsoft SQL Server 2005 DB-Server. Im DB-Server habe ich rund 250 Benutzerdatenbanken. Ich muss all diese Datenbanken sichern. Da die manuelle Sicherung viel Zeit in Anspruch nimmt, suche ich ein Batch- oder DB-Skript, das automatisch die Sicherung aller 250 Datenbanken erstellt. Kann mir bitte jemand dabei helfen?
Hinweis: Erstellen Sie zuerst einen Ordner auf dem D:Laufwerk. (zB D:\User_DataBackup\)
Schritt 1: Erstellen Sie eine Prozedur, die unten angegeben ist.
CreatePROCEDURE[dbo].[UserDataBaseBackUp]ASBEGINSET NOCOUNT ON;DECLARE@name VARCHAR(50)-- database nameDECLARE@path VARCHAR(256)-- path for backup filesDECLARE@fileName VARCHAR(256)-- filename for backupDECLARE@fileDate VARCHAR(20)-- used for file nameSET@path ='D:\User_DataBackup\' -- as same as your created folder'SELECT@fileDate =CONVERT(VARCHAR(20),GETDATE(),104)DECLARE db_cursor CURSORFORSELECT name
FROM MASTER.dbo.sysdatabases
WHERE name NOTIN('master','model','msdb','tempdb','ReportServer','ReportServerTempDB')OPEN db_cursor
FETCH NEXT FROM db_cursor INTO@name
WHILE@@FETCH_STATUS =0BEGINSET@fileName =@path +@name +'_'+@fileDate +'.BAK'BACKUPDATABASE@name TODISK=@fileName
FETCH NEXT FROM db_cursor INTO@name
ENDCLOSE db_cursor
DEALLOCATE db_cursor
END
Schritt 2: Führen Sie das oben beschriebene Verfahren aus.
EXEC[UserDataBaseBackUp]
Sie können diesen Vorgang auch einplanen. Dieses Verfahren wird hoffentlich getestet, es wird helfen.
Funktioniert ein Leckerbissen, könnte es vielleicht durch Überschreiten des Pfades verbessert werden?
Robin Salih
11
Entwickeln Sie einen Wartungsplan
SQL Server verfügt über diese erstaunliche Funktion, mit der das Skript und der Auftrag für Sie erstellt werden
Schritt 1:
Klicken Sie mit der rechten Maustaste Maintenance PlanunterManagement
Schritt 2:
Nennen Sie Ihren Plan
Schritt 3:
Wählen Sie die Aufgabe Datenbanksicherung
Schritt 4:
Konfigurieren Sie die Aufgabe, wählen Sie Datenbanken, Speicherort des Ordners, Art der Sicherungsverbindung (vollständig, differenziell, Transaktionsprotokoll) usw. aus.
Schritt 5:
Konfigurieren Sie den Auftragszeitplan
Ich empfehle, einen separaten Plan für Systemdatenbanken und Ihre Benutzerdatenbanken zu haben, um Probleme jeglicher Art zu vermeiden
Hinweis: Express-Editionen von SQL Server bieten keine Wartungsplanfunktionalität.
Alan B
8
Ich weiß, dass die Pflege vieler Datenbanken mit SSMS etwas verwirrend sein kann, aber es ist ganz einfach.
Ich kann einen effektiveren Weg empfehlen, nämlich das Wartungsskript von Ola Hallengren . Es ist sehr cool und sehr effektiv. Und Sie können viel mehr als nur alle Datenbanken sichern, Sie können alle Arten von Wartungsprozeduren durchführen.
Sie können zum Beispiel alle Datenbanken sichern, komprimieren und mit einem Zertifikat Ihrer Wahl verschlüsseln, indem Sie einen Befehl wie diesen verwenden (und alle sind optional, und Verschlüsselung und Komprimierung funktionieren unter SQL Server 2005 nicht, aber ich denke, dass dies der Fall ist zeigen die Flexibilität und Stärke von Olas Skript):
Bei der Antwort von JP habe ich einen Parameter hinzugefügt, um das Zielverzeichnis zu übergeben (und möglicherweise weitere Optionen hinzuzufügen):
CreatePROCEDURE[dbo].[UserDataBaseBackUp](@OutputDir varchar(255))ASBEGINSET NOCOUNT ON;DECLARE@name VARCHAR(50)-- database nameDECLARE@path VARCHAR(256)-- path for backup filesDECLARE@fileName VARCHAR(256)-- filename for backupDECLARE@fileDate VARCHAR(20)-- used for file nameSET@path =@OutputDir
SELECT@fileDate =CONVERT(VARCHAR(20),GETDATE(),104)PRINT'Starting Backups'DECLARE db_cursor CURSORFORSELECT name FROM MASTER.dbo.sysdatabases
WHERE name NOTIN('master','model','msdb','tempdb','ReportServer','ReportServerTempDB')OPEN db_cursor
FETCH NEXT FROM db_cursor INTO@name
WHILE@@FETCH_STATUS =0BEGINSET@fileName =@path +@name +'_'+@fileDate +'.BAK'PRINT'Starting Backup For '+@name
BACKUPDATABASE@name TODISK=@fileName WITH FORMAT
FETCH NEXT FROM db_cursor INTO@name
ENDCLOSE db_cursor
DEALLOCATE db_cursor
PRINT'Backups Finished'END
GO
Sie können SELECT-Anweisung oder CURSOR wie folgt verwenden:
DECLARE@PathForBackUp VARCHAR(255)SET@PathForBackUp ='F:\Backup\User DB\'
SELECT 'BACKUPDATABASE[' + name + ']TODISK= N''' + @PathForBackUp + '' + name + '.bak''WITH NOFORMAT, NOINIT, NAME = N''' + name + '_FullBackUp'', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS =5'FROM sys.databases
WHERE database_id >4
ODER
DECLARE@DBName VARCHAR(255)DECLARE@PathForBackUp VARCHAR(255)DECLARE@FileName VARCHAR(255)DECLARE@DateFile VARCHAR(255)DECLARE@SQL NVARCHAR(2048)SET@PathForBackUp ='F:\Backup\User DB\'
SET @DateFile = REPLACE(REPLACE(CONVERT(VARCHAR(20),GETDATE(),120) ,'','T'), ':','')
DECLARE BACKUPING CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases WHERE dbid > 4
OPEN BACKUPING
FETCH NEXT FROM BACKUPING INTO @DBName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @FileName = @PathForBackUp + @DBName + '_' + @DateFile + '.BAK'
SET @SQL = 'BACKUPDATABASE'+@DBName+ 'TODISK='''+@FileName+'''WITH COMPRESSION 'PRINT@SQL
EXECUTE sp_executesql @sql
FETCH NEXT FROM BACKUPING INTO@DBName
ENDCLOSE BACKUPING
DEALLOCATE BACKUPING
Entwickeln Sie einen Wartungsplan
SQL Server verfügt über diese erstaunliche Funktion, mit der das Skript und der Auftrag für Sie erstellt werden
Schritt 1:
Klicken Sie mit der rechten Maustaste
Maintenance Plan
unterManagement
Schritt 2:
Nennen Sie Ihren Plan
Schritt 3:
Wählen Sie die Aufgabe Datenbanksicherung
Schritt 4:
Konfigurieren Sie die Aufgabe, wählen Sie Datenbanken, Speicherort des Ordners, Art der Sicherungsverbindung (vollständig, differenziell, Transaktionsprotokoll) usw. aus.
Schritt 5:
Konfigurieren Sie den Auftragszeitplan
Ich empfehle, einen separaten Plan für Systemdatenbanken und Ihre Benutzerdatenbanken zu haben, um Probleme jeglicher Art zu vermeiden
Hilfreiche Links:
quelle
Ich weiß, dass die Pflege vieler Datenbanken mit SSMS etwas verwirrend sein kann, aber es ist ganz einfach.
Ich kann einen effektiveren Weg empfehlen, nämlich das Wartungsskript von Ola Hallengren . Es ist sehr cool und sehr effektiv. Und Sie können viel mehr als nur alle Datenbanken sichern, Sie können alle Arten von Wartungsprozeduren durchführen.
Sie können zum Beispiel alle Datenbanken sichern, komprimieren und mit einem Zertifikat Ihrer Wahl verschlüsseln, indem Sie einen Befehl wie diesen verwenden (und alle sind optional, und Verschlüsselung und Komprimierung funktionieren unter SQL Server 2005 nicht, aber ich denke, dass dies der Fall ist zeigen die Flexibilität und Stärke von Olas Skript):
quelle
Bei der Antwort von JP habe ich einen Parameter hinzugefügt, um das Zielverzeichnis zu übergeben (und möglicherweise weitere Optionen hinzuzufügen):
Also dann:
quelle
Sie können SELECT-Anweisung oder CURSOR wie folgt verwenden:
ODER
quelle
Sie können PowerShell auch wie in Verwenden von PowerShell zum Sichern aller Benutzerdatenbanken von Buck Woody gezeigt verwenden:
quelle