Prise de sauvegarde de toutes les bases de données dans SQL Server
13
J'ai un serveur de base de données Microsoft SQL Server 2005. Sur le serveur DB, j'ai environ 250 bases de données utilisateur. Je dois sauvegarder toutes ces bases de données. Étant donné que la prise de sauvegarde manuelle prend beaucoup de temps, je recherche un script Batch ou un script DB qui prendra automatiquement la sauvegarde de toutes les 250 bases de données. Quelqu'un peut-il m'aider à ce sujet?
Remarque: Créez d'abord un dossier sur le D:lecteur. (par exemple D:\User_DataBackup\)
Étape 1: Créez une procédure indiquée ci-dessous.
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
Étape 2: Exécutez la procédure ci-dessus.
EXEC[UserDataBaseBackUp]
Vous pouvez également planifier cette procédure. J'espère que cette procédure sera testée.
Fonctionne un régal, pourrait être amélioré peut-être en passant dans le chemin?
Robin Salih
11
Élaborer un plan de maintenance
SQL Server a cette fonctionnalité étonnante où il créera le script et le travail pour vous
Étape 1:
Faites un clic droit sur Maintenance PlansousManagement
Étape 2:
nommez votre plan
Étape 3:
Sélectionnez la tâche de sauvegarde de la base de données
Étape 4:
configurer la tâche, sélectionner les bases de données, l'emplacement du dossier, le type de connexion (complète, différentielle, journal des transactions), etc.
Étape 5:
configurer le calendrier des travaux
Je recommande d'avoir un plan distinct pour les bases de données système et vos bases de données utilisateur de pour éviter tout type de problème
Remarque: les éditions Express de SQL Server n'offrent pas de fonctionnalité de plan de maintenance.
Alan B
8
Je sais pertinemment que la maintenance de nombreuses bases de données avec SSMS peut être un peu déroutante, mais c'est simple.
Je peux recommander un moyen plus efficace, qui utilise le script de maintenance d'Ola Hallengren . C'est très cool et très efficace. Et vous pouvez faire bien plus que simplement sauvegarder toutes les bases de données, vous pouvez effectuer tous les types de procédures de maintenance.
Par exemple, vous pouvez sauvegarder toutes les bases de données, les compresser et les chiffrer avec un certificat de votre choix, en utilisant une commande comme celle-ci (et elles sont toutes facultatives, et le chiffrement et la compression ne fonctionneront pas sur SQL Server 2005 mais je pense que ce sera le cas montrer la flexibilité et la force du script d'Ola):
En travaillant sur la réponse de JP, j'ai ajouté un paramètre pour passer le répertoire de destination (et très probablement ajouter plus d'options):
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
Vous pouvez utiliser SELECT Statement ou CURSOR comme ceci:
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
OU
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
Élaborer un plan de maintenance
SQL Server a cette fonctionnalité étonnante où il créera le script et le travail pour vous
Étape 1:
Faites un clic droit sur
Maintenance Plan
sousManagement
Étape 2:
nommez votre plan
Étape 3:
Sélectionnez la tâche de sauvegarde de la base de données
Étape 4:
configurer la tâche, sélectionner les bases de données, l'emplacement du dossier, le type de connexion (complète, différentielle, journal des transactions), etc.
Étape 5:
configurer le calendrier des travaux
Je recommande d'avoir un plan distinct pour les bases de données système et vos bases de données utilisateur de pour éviter tout type de problème
Liens utiles:
la source
Je sais pertinemment que la maintenance de nombreuses bases de données avec SSMS peut être un peu déroutante, mais c'est simple.
Je peux recommander un moyen plus efficace, qui utilise le script de maintenance d'Ola Hallengren . C'est très cool et très efficace. Et vous pouvez faire bien plus que simplement sauvegarder toutes les bases de données, vous pouvez effectuer tous les types de procédures de maintenance.
Par exemple, vous pouvez sauvegarder toutes les bases de données, les compresser et les chiffrer avec un certificat de votre choix, en utilisant une commande comme celle-ci (et elles sont toutes facultatives, et le chiffrement et la compression ne fonctionneront pas sur SQL Server 2005 mais je pense que ce sera le cas montrer la flexibilité et la force du script d'Ola):
la source
En travaillant sur la réponse de JP, j'ai ajouté un paramètre pour passer le répertoire de destination (et très probablement ajouter plus d'options):
Donc alors:
la source
Vous pouvez utiliser SELECT Statement ou CURSOR comme ceci:
OU
la source
Vous pouvez également utiliser PowerShell comme indiqué dans Utiliser PowerShell pour sauvegarder toutes les bases de données utilisateur de Buck Woody:
la source