Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- USE [master]
- GO
- /****** Object: StoredProcedure [dbo].[sp_BackupDatabases] ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- -- =============================================
- -Autor: Microsoft
- – Erstellt am: 2010-02-06
- -Beschreibung: Sichern von Datenbanken für SQLExpress
- -- Parameter1: databaseName
- --Parameter2: BackupType F = vollständig, D = differenziell L = Protokoll
- -3. Parameter: Speicherort sichern
- -- =============================================
- CREATE PROCEDURE [Dbo]. [Sp_BackupDatabases]
- @databaseName Sysname = Null
- @backupType CHAR(1),
- @backupLocation nvarchar(200)
- AS
- SET NOCOUNT ON.
- DECLARE @DBs TABLE
- (
- ID Int IDENTITY-PRIMÄRSCHLÜSSEL
- DBNAME nvarchar(500)
- )
- – Wählen Sie nur Datenbanken online sind, falls alle Datenbanken gesichert werden gewählt werden
- Wenn Datenbank ausgewählt werden bis nur wählen, die Sie von @DBs
- @DBs (DBNAME) einfügen
- Wählen Sie Namen aus master.sys.databases
- where state=0
- AND name=@DatabaseName
- Oder @DatabaseName ist NULL.
- Nach Namen sortieren
- -Datenbanken nicht gesichert müssen filtern
- IF @backupType='F'
- BEGIN
- @DBs löschen, DBNAME IN ('Tempdb', 'Northwind' "Pubs", "AdventureWorks")
- END
- ELSE IF @backupType = hatte "
- BEGIN
- @DBs löschen, DBNAME IN ('Tempdb', 'Northwind', 'Pubs' 'master', "AdventureWorks")
- END
- ELSE IF @backupType = "L"
- BEGIN
- @DBs löschen, DBNAME IN ('Tempdb', 'Northwind', 'Pubs' 'master', "AdventureWorks")
- END
- ELSE
- BEGIN
- RETURN
- END
- -Variablen
- DECLARE @BackupName varchar(100)
- DECLARE @BackupFile varchar(100)
- DECLARE @DBNAME varchar(300)
- DECLARE @sqlCommand NVARCHAR(1000)
- DECLARE @dateTime NVARCHAR(20)
- DECLARE @Loop int
- -Datenbanken einzeln durchlaufen
- Wählen Sie @Loop = min(ID) von @DBs
- @Loop nicht NULL ist
- BEGIN
- -Datenbanknamen müssen im Format [Dbname], da einige haben- oder _ in ihrem Namen
- SET @DBNAME = '[' +(SELECT DBNAME FROM @DBs WHERE ID = @Loop) +"']
- -Legen Sie das aktuelle Format für Datums- / n yyyyhhmmss
- SET @dateTime = ersetzen (konvertieren (VARCHAR, GETDATE(),101),'/','') + '_' + ersetzen (konvertieren (VARCHAR, GETDATE(),108),':','')
- – Erstellen Sie Sicherungsdateiname path\filename.extension Format für vollständige, Diff und Protokoll-backups
- IF @backupType = 'F'
- SET @BackupFile = @backupLocation+REPLACE(REPLACE(@DBNAME, '[',''),']','')+ '_FULL_'+ @dateTime+ '.BAK'
- ELSE IF @backupType = hatte "
- SET @BackupFile = @backupLocation+REPLACE(REPLACE(@DBNAME, '[',''),']','')+ '_DIFF_'+ @dateTime+ '.BAK'
- ELSE IF @backupType = "L"
- SET @BackupFile = @backupLocation+REPLACE(REPLACE(@DBNAME, '[',''),']','')+ '_LOG_'+ @dateTime+ '.TRN'
- -Benennen Sie der Sicherung in den Medien speichern
- IF @backupType = 'F'
- SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') + "vollständige Sicherung" + @dateTime
- IF @backupType = 'D'
- SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') + "differenzielle Sicherung für ' + @dateTime
- IF @backupType = 'L'
- SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') + "Sicherung für ' + @dateTime
- -Generieren von dynamischen SQL-Befehl ausgeführt werden
- IF @backupType = 'F'
- BEGIN
- SET @sqlCommand = "Datenbank sichern" +@DBNAME+ ' TO DISK = '''+@BackupFile+ ''' INIT, NAME = ''' +@BackupName+'' ', NOSKIP, NoFormat. '
- END
- IF @backupType = 'D'
- BEGIN
- SET @sqlCommand = "Datenbank sichern" +@DBNAME+ ' TO DISK = '''+@BackupFile+ ''' DIFFERENZIELL INIT, Namen = ''' +@BackupName+'' ', NOSKIP, NoFormat. '
- END
- IF @backupType = 'L'
- BEGIN
- SET @sqlCommand = 'BACKUP LOG +@DBNAME+ ' TO DISK = '''+@BackupFile+ ''' INIT, NAME = ''' +@BackupName+'' ', NOSKIP, NoFormat. '
- END
- -Generierten SQL-Befehl ausführen
- EXEC(@sqlCommand)
- -Gehe zu der nächsten Datenbank
- SELECT @Loop = min(ID) von @DBs, ID > @Loop
- ENDE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement