备份SQL Server数据库到Azure Storage

对于生产数据来讲,数据的安全性是至关重要的,任何数据的丢失都可能产生严重的的后果。而备份作为数据的副本,可以在当数据库出现故障或者遭到破坏时可以根据备份的数据库及事务日志文件还原到最近的时间点将损失降到最低点。
对于传统的备份来讲,一般都是使用数据库自带的备份或使用第三方的备份软件将数据库备份到本地的磁盘/磁带存储,这种备份方式的前提是需要有一个大的存储池用来按照备份文件的生命周期来存储我们的备份文件。这就意味着我们需要准备一个大的存储池。考虑到准备存储池需要一定得资源,那么很多小伙伴肯定就会问了,我能否将数据库备份到云?答案是可以得。那么接下来我们就一起来聊聊如何将SQL Server数据库备份到云端和备份到云端所带来的好处。
将数据库备份到azure storage的好处如下:

  • 灵活、可靠、无限制的站点外存储:在 Microsoft Azure Blob 服务上存储备份是一种既便捷灵活又易于访问的站点外存储方法。 为SQL Server 备份创建站点外存储就像修改现有脚本/作业一样简单。 站点外存储位置通常应远离生产数据库位置,以防止出现同时影响站点外和生产数据库位置的一个灾难。 通过选择地理复制 Blob 存储区,在发生可能影响整个区域的灾难时多了一层额外的保护。 此外,备份副本随时随地可用,并可以轻松访问它们来执行还原。
  • 备份存档:在对备份进行存档时,Microsoft Azure Blob 存储服务能够提供可替代常用磁带存储方式的更好方式。 选择磁带存储时可能需要将数据实际运输到场外设施,并且需要采取一些介质保护措施。 在 Microsoft Azure Blob 存储区中存储备份可以提供一个即时、高度可用、耐久的存档方案。
  • 无硬件管理开销:没有有关 Microsoft Azure 服务的硬件管理开销。 Microsoft Azure 服务管理硬件并支持地理复制以提供冗余和防止硬件故障。
  • 当前对于在 Microsoft Azure 虚拟机中运行的 SQL Server 实例,可以通过创建附加的磁盘来备份到 Microsoft Azure Blob 存储服务。 但是,对于可以附加到 Microsoft Azure 虚拟机的磁盘数有限制。 限制值为:超大实例最多使用 16 个磁盘,较小的实例可使用的磁盘则更少。 通过允许直接备份到 Microsoft Azure Blob 存储区,你可以绕过 16 个磁盘的限制。
    此外,目前存储在 Microsoft Azure Blob 存储服务中的备份文件直接可用于本地 SQL Server 或在 Microsoft Azure 虚拟机中运行的其他 SQL Server ,而无需进行数据库附加/分离或下载并附加 VHD。
  • 成本权益:只需要为使用的服务付费。 可以作为经济合算的站点外备份存档方案。

但是需要注意将SQL Server备份到Azure Storage需要确保数据库SQL Server 2012 SP1 CU2及以上版本。

说了这么多,下面我们就一起来看一下,如何将数据库备份到Azure Storage。
首先我们需要准备一个存储账户:

获取access key,本次示例中我们使用access key的方式访问存储账户:

使用如下T-SQL在SQL中创建账户:

IF NOT EXISTS(SELECT * FROM sys.credentials

 WHERE credential_identity = ‘ bkuptour‘)

CREATE CREDENTIAL bkuptourl WITH IDENTITY = ‘sql12bak‘, SECRET = ‘5amfZJpKLcR2lAfEBZod18VYbxZOPUbtKH9RowDQ3Ixv5sGMnSj5Lo/UbPb/zCCRKh/kAxnOaOS9oJELTVVoTg==‘;

创建完成后我们可以在存储账户中创建一个container用来存储备份文件:

创建完成以后可以使用如下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 ‘[email protected]_name+ ‘ TO URL =‘‘‘+ @BackupfileName  +‘‘‘ WITH CREDENTIAL = ‘‘bkuptourl‘‘,COMPRESSION ‘

       FETCH NEXT FROM db_cursor INTO @DB_name  

END  

CLOSE db_cursor  

DEALLOCATE db_cursor

备份完成,如下图所示:

原文地址:https://blog.51cto.com/wuyvzhang/2468327

时间: 2024-10-12 04:48:46

备份SQL Server数据库到Azure Storage的相关文章

备份SQL Server数据库

1.建立批处理文件 @echo off set dates=%date:~0,4%%date:~5,2%%date:~8,2% set rar="%Programfiles%\WinRAR\Winrar.exe" set rand=%random% set folder=d:\DBback\%date% rem 每天创建一个文件夹,以当天日期命名 if not exist %folder% md %folder% @echo ……正在备份中,请不要关闭程序…… rem 如果备份sql2

如何使用代码备份SQL Server数据库

1.添加引用 using Microsoft.SqlServer.Management.Smo; using Microsoft.SqlServer.Management.Common; 2. Backup bkpDatabase = new Backup(); // Set the backup type to a database backup bkpDatabase.Action = BackupActionType.Database; // Set the database that w

SQL Server 数据库定时自动备份

原文:SQL Server 数据库定时自动备份 SQL Server 数据库定时自动备份——每天定时备份,保留前8天的备份 利用SQL Server代理新建作业来定期备份 1)在数据库库的[SQL Server代理]->[作业],右键[新建作业] 2)在[常规]选项卡设置[名称](自定义) 3)在[步骤]选项卡中点击[新建],然后在弹出的窗口的[常规]选项卡中设置“步骤名称”(自定义):选择“类型”为“Transact-SQL 脚本(T-SQL)”(默认):选择“数据库”为你要备份的数据库:添加

SQL server数据库备份还原问题备忘(亲测有效)

问题一:SQL server数据库备份还原方法 http://www.cnblogs.com/zgqys1980/archive/2012/07/04/2576382.html 问题二:无法执行 BACKUP LOG,因为当前没有数据库备份 http://blog.csdn.net/aojiancc2/article/details/46316451 问题三:还原数据库失败 备份集中数据库备份与现有数据库不同 http://jingyan.baidu.com/article/fb48e8be52

《SQL Server企业级平台管理实践》读书笔记——关于SQL Server数据库的备份方式

数据备份一直被认为数据库的生命,也就是一个DBA所要掌握的主要技能之一,本篇就是介绍SQL Server备份原则,SQL Server数据库分为数据文件和日志文件.为了使得数据库能够恢复一致点,备份不仅需要拷贝数据数据文件里的内容,还要拷贝日志文件里的内容.那么根据每次备份的目标不同,我们可以将备份分为数据备份和日志备份. 数据备份的范围可以是完整的数据库.部分数据库.一组文件或文件组.所以根据备份下来的数据文件的范围,又分为了完整数据库备份.文件备份和部分备份. 完整数据库备份 完整数据库备份

第一章、关于SQL Server数据库的备份和还原(sp_addumpdevice、backup、Restore)

在sql server数据库中,备份和还原都只能在服务器上进行,备份的数据文件在服务器上,还原的数据文件也只能在服务器上,当在非服务器的机器上启动sql server客户端的时候,也可以通过该客户端来备份和还原数据库,但是这种操作实质是在服务器上进行的,备份的数据文件在服务器上,还原的数据文件也只能在服务器上,这个原则不会变,只是使用了客户端的一个工具来操作这个过程而已. 1.1.备份数据库 备份数据库有两种方式: 第一种是在企业管理器中,利用工具对数据库进行备份,这种备份的文件只会有一个,即以

对 sql server 数据库的备份进行加密

原文:对 sql server 数据库的备份进行加密 嗯,最近在研究数据库备份相关的东西,考虑到应该为数据库备份加个密,就准备从网上搜索一下看看有什么好办法,没想到还挺乱... 首先,我从网上搜到的,对数据库备份加密的方法,主要有三种:   1.在使用 BACKUP 语句时,添加 PASSWORD 参数[此方法适用于 sql server 2012 以前的版本(不包含 2012)] 不过呢,其实这个 PASSWORD 参数的加密,并不是我们想象中的对数据完整的加密. 根据 MSDN 中的介绍:h

SQL Server数据库的备份和还

转:http://blog.csdn.net/zwj7612356/article/details/8188025 在sql server数据库中,备份和还原都只能在服务器上进行,备份的数据文件在服务器上,还原的数据文件也只能在服务器上,当在非服务器的机器上启动sql server客户端的时候,也可以通过该客户端来备份和还原数据库,但是这种操作实质是在服务器上进行的,备份的数据文件在服务器上,还原的数据文件也只能在服务器上,这个原则不会变,只是使用了客户端的一个工具来操作这个过程而已. 1.1.

SQL Server数据库备份:通过Windows批处理命令执行

通过Windows批处理命令执行SQL Server数据库备份 建立mybackup.bat ,输入以下内容直接运行该脚本,即可开始自动备份数据库也可把该脚本加入windows任务计划里执行. ----------------------------------------------------------------------------@echo off set path=%path%;C:Program Files\Microsoft SQL Server\80\Tools\Binn