What is a simple command line program or script to backup SQL server databases?

后端 未结 11 901
北海茫月
北海茫月 2020-11-28 19:35

I\'ve been too lax with performing DB backups on our internal servers.

Is there a simple command line program that I can use to backup certain databases in SQL Serv

11条回答
  •  北海茫月
    2020-11-28 19:43

    SET NOCOUNT ON;
    declare @PATH VARCHAR(200)='D:\MyBackupFolder\'
     -- path where you want to take backups
    IF OBJECT_ID('TEMPDB..#back') IS NOT NULL
    
    DROP TABLE #back
    
    CREATE TABLE #back
    (
    RN INT IDENTITY (1,1),
    DatabaseName NVARCHAR(200)
    
    )
    
    INSERT INTO #back 
    SELECT       'MyDatabase1'
    UNION SELECT 'MyDatabase2'
    UNION SELECT 'MyDatabase3'
    UNION SELECT 'MyDatabase4'
    
    -- your databases List
    
    DECLARE @COUNT INT =0 ,  @RN INT =1, @SCRIPT NVARCHAR(MAX)='',  @DBNAME VARCHAR(200)
    
    PRINT '---------------------FULL BACKUP SCRIPT-------------------------'+CHAR(10)
    SET @COUNT = (SELECT COUNT(*) FROM #back)
    PRINT 'USE MASTER'+CHAR(10)
    WHILE(@COUNT > = @RN)
    BEGIN
    
    SET @DBNAME =(SELECT DatabaseName FROM #back WHERE RN=@RN)
    SET @SCRIPT ='BACKUP DATABASE ' +'['+@DBNAME+']'+CHAR(10)+'TO DISK =N'''+@PATH+@DBNAME+ N'_Backup_'
    + REPLACE ( REPLACE ( REPLACE ( REPLACE ( CAST ( CAST ( GETDATE () AS DATETIME2 ) AS VARCHAR ( 100 )), '-' , '_' ), ' ' , '_' ), '.' , '_' ), ':' , '' )+'.bak'''+CHAR(10)+'WITH COMPRESSION, STATS = 10'+CHAR(10)+'GO'+CHAR(10)
    PRINT @SCRIPT
    SET @RN=@RN+1
    END
    
     PRINT '---------------------DIFF BACKUP SCRIPT-------------------------'+CHAR(10)
    
      SET  @COUNT  =0 SET  @RN  =1 SET @SCRIPT ='' SET @DBNAME =''
     SET @COUNT = (SELECT COUNT(*) FROM #back)
    PRINT 'USE MASTER'+CHAR(10)
    WHILE(@COUNT > = @RN)
    BEGIN
    SET @DBNAME =(SELECT DatabaseName FROM #back WHERE RN=@RN)
    SET @SCRIPT ='BACKUP DATABASE ' +'['+@DBNAME+']'+CHAR(10)+'TO DISK =N'''+@PATH+@DBNAME+ N'_Backup_'
    + REPLACE ( REPLACE ( REPLACE ( REPLACE ( CAST ( CAST ( GETDATE () AS DATETIME2 ) AS VARCHAR ( 100 )), '-' , '_' ), ' ' , '_' ), '.' , '_' ), ':' , '' )+'.diff'''+CHAR(10)+'WITH DIFFERENTIAL, COMPRESSION, STATS = 10'+CHAR(10)+'GO'+CHAR(10)
    PRINT @SCRIPT
    SET @RN=@RN+1
    END
    

提交回复
热议问题