1. 程式人生 > 資料庫 >SQL SERVER 資料庫備份程式碼例項

SQL SERVER 資料庫備份程式碼例項

本文例項為大家分享SQL SERVER資料庫備份的具體程式碼,供大家參考,具體內容如下

/**
  批量迴圈備份使用者資料庫,做為資料庫遷移臨時用
*/

SET NOCOUNT ON

DECLARE @d varchar(8) 
DECLARE @Backup_Flag NVARCHAR(10)
 
SET @d=convert(varchar(8),getdate(),112) 

/***自定義選擇備份哪些資料庫****/
--SET @Backup_Flag='UserDB'      -- 所用的使用者資料庫
SET @Backup_Flag='AlwaysOnDB'    -- AlwaysOn 使用者資料庫

CREATE TABLE #T (ID INT NOT NULL IDENTITY(1,1),SQLBak NVARCHAR(MAX) NOT NULL)

IF @Backup_Flag='UserDB'
BEGIN 

  INSERT INTO #T (SQLBak)
  SELECT 
      'BACKUP DATABASE [' + name + '] TO DISK=''E:\Backup\' + NAME + '_Full_'+@d+'.bak'' WITH CHECKSUM,NOFORMAT,INIT,SKIP,COMPRESSION' AS 'SQLBak'
  FROM  sys.databases
  WHERE  database_id>4

END



IF @Backup_Flag='AlwaysOnDB' 
BEGIN 

  INSERT INTO #T (SQLBak)
  SELECT 
      'BACKUP DATABASE [' + database_name + '] TO DISK=''E:\Backup\' + database_name + '_Full_'+@d+'.bak'' WITH CHECKSUM,COMPRESSION' AS 'SQLBak'
  FROM  sys.availability_databases_cluster
END



DECLARE 
  @Minid INT,@Maxid INT,@sql VARCHAR(max)
SELECT @Minid = MIN(id),@Maxid = MAX(id)
FROM  #T

PRINT N'--列印備份指令碼..........'


WHILE @Minid <= @Maxid
  BEGIN
    SELECT @sql = SQLBak
    FROM  #T
    WHERE  id = @Minid
 ----exec (@sql)
    PRINT ( @sql )
    SET @Minid = @Minid + 1
  END

DROP TABLE #T

以上所述是小編給大家介紹的SQL SERVER資料庫備份詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對我們網站的支援!