在SQL Server Express版本中没有代理功能如何自动备份数据库
因为是免费的且单个数据库可以支持到10GB,对于一般企业完全足够了,也就将就使用了,备份将分为两步:
1、创建备份脚本
2、创建系统的计划任务进行每天的备份
详细做法如下:
1、创建备份脚本
打开SSMS/用其它编辑器也可以,新建查询,输入如下代码,这里考虑到要备份所有数据库,所以使用master数据库来创建执行脚本,亦可使用超简单的对于单独数据库操作,只需要几个命令即可,后文会给出示例,以下为完整备份所有数据库的语句。
USE [master]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO CREATE PROCEDURE [dbo].[sp_BackupDatabases]
@databaseName sysname = null, --数据库名称
@backupLocation nvarchar(200) --备份位置
AS
SET NOCOUNT ON;
DECLARE @DBs TABLE
(
ID int IDENTITY PRIMARY KEY,
DBNAME nvarchar(500)
)
--用一个表来存放找到的所有数据库名
INSERT INTO @DBs (DBNAME)
SELECT Name FROM master.sys.databases
where state=0 AND name=@DatabaseName OR @DatabaseName IS NULL ORDER BY Name -- 过滤掉不需要备份的数据库(自定不需要备份的数据库名称填入括号内)
DELETE @DBs where DBNAME IN ('master','model','msdb','tempdb') DECLARE @BackupFile varchar(100) --备份文件名称
DECLARE @DBNAME varchar(300) --数据库名称
DECLARE @sqlCommand NVARCHAR(1000) --命令名称
DECLARE @dateTime NVARCHAR(20) --日期时间
DECLARE @Loop int --循环备份所找到的数据库 SELECT @Loop = min(ID) FROM @DBs --从第1个开始备份 WHILE @Loop IS NOT NULL --有数据库要备份时进行操作
BEGIN
--获得得数据库ID
SET @DBNAME = '['+(SELECT DBNAME FROM @DBs WHERE ID = @Loop)+']' --设置当前日期和时间,格式为年月日
SET @dateTime = REPLACE(CONVERT(VARCHAR, GETDATE(),112),'/','') --设置备份文件名称,例如: D:\SQLBak\dbname_FULL_20171121.BAK
SET @BackupFile = @backupLocation+REPLACE(REPLACE(@DBNAME, '[',''),']','')+ '_FULL_'+ @dateTime+ '.BAK' --按类型执行备份操作
SET @sqlCommand = 'BACKUP DATABASE ' +@DBNAME+ ' TO DISK = '''+@BackupFile+ ''' WITH INIT, NOSKIP, NOFORMAT' --开始执行备份命令
EXEC(@sqlCommand) --备份下一个数据库
SELECT @Loop = min(ID) FROM @DBs where ID>@Loop END
在SSMS中执行完上面的代码后,将会在master数据库中产一个存储过程,如下图示:

现立建立几个数据库来测试,环境中我建立了test、test01、test02三个数据库,

在SSMS中执行刚才建立的存储过程,
EXEC master.dbo.sp_BackupDatabases @backupLocation='D:\SQLBackups\'
@后面是指定备份文件存放路径,执行结束后可以在D:\SQLBackups文件夹中看到已经备份的文件,没有错误产生,对比上图中的数据库可以看出这就是想要的结果,如下图:

创建命令备份,这里将离开SSMS环境来操作。
sqlcmd -S . -E -Q "EXEC master.dbo.sp_BackupDatabases @backupLocation='D:\SQLBackups\'"
对上面的命令做下注释
Sqlcmd 是SQL自带的命令工具,
-S(大写)是指定服务器,在本机的话就用点(.)表示,两边都有空格
-E(大写)表明是信任的连接
-Q(大写)命令行查询并且完成后退出
打开CMD窗口,执行上面的语句输出是正常的,说明备份成功了,如下图:

在C盘bak目录中建立了.bat批处理文件,将上面的语句放入文件中,将如下图:

2、创建系统的计划任务进行每天的备份
文件建立好后打开控制面板-管理工具-任务计划,建立一个任务即可,如下图。 
附注:简单的语句,此种情况需要每个数据库建立一个存储过程来操作,适合只有一个数据库或是少量的,将上面的存储过程内容改成如下的即可,其它一样操作。
USE test
CREATE PROCEDURE [dbo].[sp_BackupDatabases]
AS
--先设置一个变量存放保存位置不然会出错,因为要按日期来备份,不用的可以去掉这部分,则只需要一条语句即可。
DECLARE @SavePath NVARCHAR(300)
SET @SavePath='D:\SqlFullBak\test_BAK'+ CONVERT(VARCHAR, GETDATE(),112)
BACKUP DATABASE test TO DISK = @SavePath WITH INIT, NOSKIP, NOFORMAT END
PS: 欢迎转载,转载请保留出处,谢谢。
参考链接:https://support.microsoft.com/en-us/help/2019698/how-to-schedule-and-automate-backups-of-sql-server-databases-in-sql-se
在SQL Server Express版本中没有代理功能如何自动备份数据库的更多相关文章
- SQL SERVER怎样将某个服务器上面的数据自动备份到另一台服务器上面(异地备份)
一:试验背景 异地备份好处:(待补充) 1:异地备份了把原有服务器数据放在另外一个位置,避免些物理损害. 比把数据刻录光盘和原始数据放同房间了房间失火了备份数据也没有了要放另外地方避免了 就是备份 ...
- Microsoft SQL Server Express各版本对比
Microsoft® SQL Server® 2016 Express 支持的操作系统 Windows 10 , Windows 8, Windows Server 2012, Windows Ser ...
- 如何安全的将VMware vCenter Server使用的SQL Server Express数据库平滑升级到完整版
背景: 由于建设初期使用的vSphere vCenter for Windows版,其中安装自动化过程中会使用SQL Server Express的免费版数据库进行基础环境构建.而此时随着业务量的增加 ...
- SQL Server 2005 版本的操作系统兼容性详细列表
操作系统要求(32 位) 此表显示对于每种 32 位版本的 SQL Server 2005,操作系统是否可以运行其服务器软件. 有关如何在 Windows Server 2008 上安装 SQL Se ...
- [C#]SQL Server Express LocalDb(SqlLocalDb)的一些体会
真觉得自己的知识面还是比较窄,在此之前,居然还不知道SqlLocalDb. SqlLocalDb是啥?其实就是简化SQL Server的本地数据库,可以这样子说,SQL Server既可以作为远程,也 ...
- SQL Server与SQL Server Express的区别
SQL Server Express 2005(以下简称 SQLExpress) 是由微软公司开发的 SQL Server 2005(以下简称 SQL2005)的缩减版,这个版本是免费的,它继承了 S ...
- SQL SERVER 2005/2008 中关于架构的理解(二)
本文上接SQL SERVER 2005/2008 中关于架构的理解(一) 架构的作用与示例 用户与架构(schema)分开,让数据库内各对象不再绑在某个用户账号上,可以解决SQL SERVE ...
- SQL SERVER 2005/2008 中关于架构的理解(一)
SQL SERVER 2005/2008 中关于架构的理解(一) 在一次的实际工作中碰到以下情况,在 SQL SERVER 2008中,新建了一个新用户去访问几张由其他用户创建的表,但是无法进行查询, ...
- 使用Visual Studio下自带的SQL Server Express
软件环境:Windows7(x64) + Visual Studio 2010 + SQL Server Express 2008 1.配置数据库 装VS2010不小心把自带的SQL Server 2 ...
随机推荐
- dotweb框架之旅 [三] - 常用对象-HttpServer
dotweb属于一个Web框架,希望通过框架行为,帮助开发人员快速构建Web应用,提升开发效率,减少不必要的代码臃肿. dotweb包含以下几个常用对象: App(dotweb) App容器,为Web ...
- java中==与equel的区别
值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中. ==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地 ...
- Ubuntu14.04LTS下安装Node.js&NPM以及个人博客hexo的初始化配置
什么是hexo Hexo 是一款基于node 的静态博客网站生成器作者 :tommy351是一个台湾的在校大学生...相比其他的静态网页生成器而言有着,生成静态网页最快,插件丰富(已经移植了大量Oct ...
- Java IO(IO流)-2
IO流 第一部分 (OutputStreamWriter BufferOutputStream) 转换流 超类为Reader和Writer 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流 ...
- 案例:AWR手工创建快照失败,SYSAUX表空间剩余不足处理
案例:AWR手工创建快照失败,SYSAUX表空间剩余不足处理 版本:Oracle 11.2.0.4 RAC 问题现象:AWR手工创建快照失败,SYSAUX表空间剩余不足. 1. 查看SYSAUX表空间 ...
- Redis 学习笔记-应用场景
Redis作缓存系统 Redis可以对每个键设置生存时间 可以限定数据占用的最大内存空间,在数据达到空间限制后可以按照一定规则自动淘汰不需要的键. 设置方法: 修改配置文件的maxmemory参数,限 ...
- 如何利用Oracle VM Templates 在几分钟内部署Oracle Real Application Clusters (RAC)
本文未经授权,禁止一切形式的转载.如果对本文有任何疑问可以通过以下方式和我交流: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiang ...
- h5样式初始化
nav, header, section, article, aside, footer { display: block; } body, p, pre, hr, ul, dl, dd, h1, h ...
- Oracle存储过程跨用户执行查询报错
在Oracle中,在USERA下编写一个存储过程,该存储过程中引用了另一个用户USERB下的表或视图对象.编译该存储过程,出现编译错误.报ORA-00942: table or view does n ...
- Leetcode题解(32)
107. Binary Tree Level Order Traversal II 题目 直接代码: /** * Definition for a binary tree node. * struct ...