對於生產數據來說,數據的安全性是相當重要的,任何數據的丟失均可能產生嚴重的的後果。而備份做爲數據的副本,能夠在當數據庫出現故障或者遭到破壞時能夠根據備份的數據庫及事務日誌文件還原到最近的時間點將損失降到最低點。
對於傳統的備份來說,通常都是使用數據庫自帶的備份或使用第三方的備份軟件將數據庫備份到本地的磁盤/磁帶存儲,這種備份方式的前提是須要有一個大的存儲池用來按照備份文件的生命週期來存儲咱們的備份文件。這就意味着咱們須要準備一個大的存儲池。考慮到準備存儲池須要必定得資源,那麼不少小夥伴確定就會問了,我可否將數據庫備份到雲?答案是能夠得。那麼接下來咱們就一塊兒來聊聊如何將SQL Server數據庫備份到雲端和備份到雲端所帶來的好處。
將數據庫備份到azure storage的好處以下:sql
可是須要注意將SQL Server備份到Azure Storage須要確保數據庫SQL Server 2012 SP1 CU2及以上版本。數據庫
說了這麼多,下面咱們就一塊兒來看一下,如何將數據庫備份到Azure Storage。
首先咱們須要準備一個存儲帳戶:
api
獲取access key,本次示例中咱們使用access key的方式訪問存儲帳戶:
安全
使用以下T-SQL在SQL中建立帳戶:ide
IF NOT EXISTS(SELECT * FROM sys.credentials WHERE credential_identity = ' bkuptour') CREATE CREDENTIAL bkuptourl WITH IDENTITY = 'sql12bak', SECRET = '5amfZJpKLcR2lAfEBZod18VYbxZOPUbtKH9RowDQ3Ixv5sGMnSj5Lo/UbPb/zCCRKh/kAxnOaOS9oJELTVVoTg==';
建立完成後咱們能夠在存儲帳戶中建立一個container用來存儲備份文件:
url
建立完成之後可使用以下T-SQL將數據庫備份到Storage Account中:日誌
DECLARE @DB_name VARCHAR(50) -- database name DECLARE @BackupLoc VARCHAR(256) -- path for backup files DECLARE @BackupfileName VARCHAR(256) -- filename for backup DECLARE @fileDate VARCHAR(20) -- used for file name -- specify database backup container location SET @BackupLoc = 'https://sql12bak.blob.core.chinacloudapi.cn/test/' set @fileDate= replace(replace(convert(nvarchar(50),getdate()),' ','_'),':','_') DECLARE db_cursor CURSOR FOR SELECT name FROM master.sys.databases WHERE database_id <>2 and state=0 OPEN db_cursor FETCH NEXT FROM db_cursor INTO @DB_name WHILE @@FETCH_STATUS = 0 BEGIN SET @BackupfileName = @BackupLoc + @DB_name + '_' + @fileDate + '.BAK' BACKUP DATABASE @DB_name TO URL = @BackupfileName WITH CREDENTIAL = 'bkuptourl',COMPRESSION print 'BACKUP DATABASE '+@DB_name+ ' TO URL ='''+ @BackupfileName +''' WITH CREDENTIAL = ''bkuptourl'',COMPRESSION ' FETCH NEXT FROM db_cursor INTO @DB_name END CLOSE db_cursor DEALLOCATE db_cursor
備份完成,以下圖所示:
code