SqlServer 2008 R2定時備份數據庫,並且發送郵件通知


先配置數據庫的郵件設置,這樣才可以發送郵件。

2.

3.

4.

5.

6.

7.

8.

9.

10.

總的預覽圖,如圖

 

執行這一段(先發送備份郵件,然后進行數據備份,將昨天的發送數據插入到另一張表中,這樣表中的數據也很小,查詢也很快,充分利用數據庫的表空間,進行拆表是一件提高查詢和插入速度很快的一種方案)

/******發送郵件通知******/
USE OpenMas
GO
DECLARE @mailContent NVARCHAR(2000),@num int,@totalMessageCount int,@sys_usr NVARCHAR(30);
SET @sys_usr = SYSTEM_USER;
SELECT @num = ISNULL(COUNT(1),0) FROM SMSSentLog WHERE YEAR(SendTime) = YEAR(GETDATE()-1) AND MONTH(SendTime)= MONTH(GETDATE()-1) AND DAY(SENDTIME) = DAY(GETDATE()-1)
SELECT @totalMessageCount = ISNULL(SUM(MessageCount),0) FROM SMSSentLog WHERE YEAR(SendTime) = YEAR(GETDATE()-1) AND MONTH(SendTime)= MONTH(GETDATE()-1) AND DAY(SENDTIME) = DAY(GETDATE()-1)
--PRINT cast(@num as nvarchar)  + '-'+ cast( @totalMessageCount as nvarchar)
SET @mailContent = '備份發送記錄表郵件內容:時間:'+ CONVERT(varchar(100), GETDATE(), 25)+',備份條數:'+CAST(@num AS NVARCHAR) +'條,總發送量:'+CAST( @totalMessageCount AS NVARCHAR)+',登錄數據庫賬號:'+@sys_usr+' 來自OpenMas機' 
--PRINT @mailContent 
USE msdb
EXEC dbo.sp_send_dbmail
@recipients='yanghenglian@163.com',
@subject='數據庫表數據備份通知',
@body =@mailContent
GO

/*每天凌晨(兩點鍾)將昨天(2015-1-9)的發送短信插入到指定月份的表(SMSSentLog201501)*/
USE OpenMas
--定義參數
--年份
DECLARE @year NVARCHAR(10)
--月份
DECLARE @month NVARCHAR(10)
--
DECLARE @day NVARCHAR(10)
--動態表名稱
DECLARE @tableName NVARCHAR(20)
--動態構建腳本
DECLARE @Sql NVARCHAR(2000)
--賦值(昨天的年月日是多少)
SET @year = YEAR(GETDATE()-1)
SET @month =MONTH(GETDATE()-1)
SET @day  = DAY(GETDATE()-1)     
    --動態構建表名稱(需要導入到備份表的名稱)
    SET @tableName  = 'SMSSentLog'+ @year + CASE WHEN LEN(@month)=1 THEN  '0'+ @month ELSE @month  END
    --PRINT @year + '-' + @month + '-' + @tableName
    SET @Sql = N'INSERT INTO '+ @tableName +'(Id,Channel,SystemCode,CompanyId,CompanyCode,CompanyName,UserId,UserCode,UserName
,AccountCode,ApplicationCode,MessageID,MessageContent,MessageCode,ExtendCode,DestinationAddress,CustomerName,SendType,SendTime,IsWapPush,MessageCount,WapUrl,CreateTime,GatawayStatus)  SELECT Id,Channel,SystemCode,CompanyId,CompanyCode,CompanyName,UserId,UserCode,UserName
,AccountCode,ApplicationCode,MessageID,MessageContent,MessageCode,ExtendCode,DestinationAddress,CustomerName,SendType,SendTime,IsWapPush,MessageCount,WapUrl,CreateTime,GatawayStatus FROM SMSSentLog  WHERE YEAR(SendTime) = '+@year+' AND MONTH(SendTime)='+@month+' AND DAY(SENDTIME) = '+@day+';'
    --拼接刪除語句,是否要刪除
    SET @Sql  = @Sql + 'DELETE FROM SMSSentLog  WHERE YEAR(SendTime) ='+@year+' AND MONTH(SendTime)='+@month+' AND DAY(SENDTIME) ='+@day+';'
    --PRINT @Sql
    --執行Sql
    EXEC sp_executesql @sql

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM