1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
   | /* =============================================  
  NG/22.12.2015 extrapolé depuis la procédure MS : https://support.microsoft.com/en-us/kb/2019698
  Description: Backup Databases for SQLExpress
  - Parameter1: databaseName  
  - Parameter2: backupType F=full, D=differential, L=log
  - Parameter3: backup file location
 
Appel par msql-backup.bat dans tache planifiée :
sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='\\srv-hg-ad\serveur2\planet\backup\', @databaseName=HG, @backupType='F'"
ou à midi :
sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='\\srv-hg-ad\serveur2\planet\backup\', @databaseName=HG, @backupType='D'"
*/
USE [master]  
GO  
/****** Object:  StoredProcedure [dbo].[sp_BackupDatabases] ******/  
SET ANSI_NULLS ON  
GO  
SET QUOTED_IDENTIFIER ON  
GO  
 
CREATE PROCEDURE [dbo].[sp_BackupDatabases] @databaseName sysname = null, @backupType CHAR(1), @backupLocation nvarchar(200)  
AS  
  SET NOCOUNT ON;  
 
  -- Declare variables
  DECLARE @BackupName varchar(100)
  DECLARE @sqlCommand NVARCHAR(500)  
  /* pour tests
  DECLARE @databaseName VARCHAR(20)    set @databaseName='xxx'
  DECLARE @backupType VARCHAR(1)       set @backupType='D'
  DECLARE @backupLocation VARCHAR(100) set @backupLocation='\monpc\repertoire_backup\'
  */
 
  -- nom de la sauvegarde = date YYMMDD + option heure HHMMSS
  SET @BackupName = @databaseName+REPLACE(CONVERT(VARCHAR, GETDATE(),2),'.','')
  --cast(datediff(d, GETDATE(), DATEFROMPARTS(year(getdate()), 1, 1)) as nvarchar)
 
  IF @backupType = 'D' 
    SET @BackupName = @BackupName+'_'+REPLACE(CONVERT(VARCHAR, GETDATE(),108),':','')+'.log'  -- 108 = hhmmss
  ELSE                 
    SET @BackupName = @BackupName+'.dat'
 
  -- Generate the dynamic SQL command to be executed
  SET @sqlCommand = 'BACKUP DATABASE [' +@databaseName+ '] TO DISK='''+@backupLocation+@BackupName+''' WITH INIT, NOSKIP, NOFORMAT'
  IF @backupType = 'D' SET @sqlCommand = @sqlCommand+', DIFFERENTIAL'
 
  -- Execute the generated SQL command
  --select @sqlCommand from hg.dbo.parametres
  EXEC(@sqlCommand)
GO | 
Partager