Advertisement
Guest User

Untitled

a guest
Jun 27th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.38 KB | None | 0 0
  1. USE [master]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[sp_BackupDatabases] ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8.  
  9. -- =============================================
  10. -Autor: Microsoft
  11. – Erstellt am: 2010-02-06
  12. -Beschreibung: Sichern von Datenbanken für SQLExpress
  13. -- Parameter1: databaseName
  14. --Parameter2: BackupType F = vollständig, D = differenziell L = Protokoll
  15. -3. Parameter: Speicherort sichern
  16. -- =============================================
  17.  
  18. CREATE PROCEDURE [Dbo]. [Sp_BackupDatabases]
  19. @databaseName Sysname = Null
  20. @backupType CHAR(1),
  21. @backupLocation nvarchar(200)
  22. AS
  23.  
  24. SET NOCOUNT ON.
  25.  
  26. DECLARE @DBs TABLE
  27. (
  28. ID Int IDENTITY-PRIMÄRSCHLÜSSEL
  29. DBNAME nvarchar(500)
  30. )
  31.  
  32. – Wählen Sie nur Datenbanken online sind, falls alle Datenbanken gesichert werden gewählt werden
  33. Wenn Datenbank ausgewählt werden bis nur wählen, die Sie von @DBs
  34. @DBs (DBNAME) einfügen
  35. Wählen Sie Namen aus master.sys.databases
  36. where state=0
  37. AND name=@DatabaseName
  38. Oder @DatabaseName ist NULL.
  39. Nach Namen sortieren
  40.  
  41. -Datenbanken nicht gesichert müssen filtern
  42. IF @backupType='F'
  43. BEGIN
  44. @DBs löschen, DBNAME IN ('Tempdb', 'Northwind' "Pubs", "AdventureWorks")
  45. END
  46. ELSE IF @backupType = hatte "
  47. BEGIN
  48. @DBs löschen, DBNAME IN ('Tempdb', 'Northwind', 'Pubs' 'master', "AdventureWorks")
  49. END
  50. ELSE IF @backupType = "L"
  51. BEGIN
  52. @DBs löschen, DBNAME IN ('Tempdb', 'Northwind', 'Pubs' 'master', "AdventureWorks")
  53. END
  54. ELSE
  55. BEGIN
  56. RETURN
  57. END
  58.  
  59. -Variablen
  60. DECLARE @BackupName varchar(100)
  61. DECLARE @BackupFile varchar(100)
  62. DECLARE @DBNAME varchar(300)
  63. DECLARE @sqlCommand NVARCHAR(1000)
  64. DECLARE @dateTime NVARCHAR(20)
  65. DECLARE @Loop int
  66.  
  67. -Datenbanken einzeln durchlaufen
  68. Wählen Sie @Loop = min(ID) von @DBs
  69.  
  70. @Loop nicht NULL ist
  71. BEGIN
  72.  
  73. -Datenbanknamen müssen im Format [Dbname], da einige haben- oder _ in ihrem Namen
  74. SET @DBNAME = '[' +(SELECT DBNAME FROM @DBs WHERE ID = @Loop) +"']
  75.  
  76. -Legen Sie das aktuelle Format für Datums- / n yyyyhhmmss
  77. SET @dateTime = ersetzen (konvertieren (VARCHAR, GETDATE(),101),'/','') + '_' + ersetzen (konvertieren (VARCHAR, GETDATE(),108),':','')
  78.  
  79. – Erstellen Sie Sicherungsdateiname path\filename.extension Format für vollständige, Diff und Protokoll-backups
  80. IF @backupType = 'F'
  81. SET @BackupFile = @backupLocation+REPLACE(REPLACE(@DBNAME, '[',''),']','')+ '_FULL_'+ @dateTime+ '.BAK'
  82. ELSE IF @backupType = hatte "
  83. SET @BackupFile = @backupLocation+REPLACE(REPLACE(@DBNAME, '[',''),']','')+ '_DIFF_'+ @dateTime+ '.BAK'
  84. ELSE IF @backupType = "L"
  85. SET @BackupFile = @backupLocation+REPLACE(REPLACE(@DBNAME, '[',''),']','')+ '_LOG_'+ @dateTime+ '.TRN'
  86.  
  87. -Benennen Sie der Sicherung in den Medien speichern
  88. IF @backupType = 'F'
  89. SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') + "vollständige Sicherung" + @dateTime
  90. IF @backupType = 'D'
  91. SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') + "differenzielle Sicherung für ' + @dateTime
  92. IF @backupType = 'L'
  93. SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',''),']','') + "Sicherung für ' + @dateTime
  94.  
  95. -Generieren von dynamischen SQL-Befehl ausgeführt werden
  96.  
  97. IF @backupType = 'F'
  98. BEGIN
  99. SET @sqlCommand = "Datenbank sichern" +@DBNAME+ ' TO DISK = '''+@BackupFile+ ''' INIT, NAME = ''' +@BackupName+'' ', NOSKIP, NoFormat. '
  100. END
  101. IF @backupType = 'D'
  102. BEGIN
  103. SET @sqlCommand = "Datenbank sichern" +@DBNAME+ ' TO DISK = '''+@BackupFile+ ''' DIFFERENZIELL INIT, Namen = ''' +@BackupName+'' ', NOSKIP, NoFormat. '
  104. END
  105. IF @backupType = 'L'
  106. BEGIN
  107. SET @sqlCommand = 'BACKUP LOG +@DBNAME+ ' TO DISK = '''+@BackupFile+ ''' INIT, NAME = ''' +@BackupName+'' ', NOSKIP, NoFormat. '
  108. END
  109.  
  110. -Generierten SQL-Befehl ausführen
  111. EXEC(@sqlCommand)
  112.  
  113. -Gehe zu der nächsten Datenbank
  114. SELECT @Loop = min(ID) von @DBs, ID > @Loop
  115.  
  116. ENDE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement