当前位置:首页 » 文件管理 » sql备份压缩

sql备份压缩

发布时间: 2023-09-22 08:23:53

❶ 如何让sql Server数据库自动备份并压缩成rar文件

1、 先开启xm_cmdshell服务
xp_cmdshell 扩展存储过程将命令字符串作为操作系统命令 shell 执行,并以文本行的形式返回所有输出。由于xp_cmdshell 可以执行任何操作系统命令,所以一旦SQL Server管理员帐号(如sa)被攻破,那么攻击者就可以利用xp_cmdshell 在SQL Server中执行操作系统命令,如:创建系统管理员,也就意味着系统的最高权限已在别人的掌控之中。由于存在安全隐患,所以在SQL Server 中, xp_cmdshell 默认是关闭的。

两种方式启用xp_cmdshell
a.打开外围应用配置器—>
功能的外围应用配置器—>
实例名Database Enginexp_cmdshell—>启用

b.sp_configure
--开启xp_cmdshell部分
--------------------------------------------------
-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1
GO
-- To update the currently configured value for advanced options.
RECONFIGURE
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GO

--通过xp_cmdshell执行shell命令的部分
--------------------------------------------------
Exec xp_cmdshell 'bcp '
GO

--关闭xp_cmdshell部分
-----------------------------------------------------
-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1
GO
-- To update the currently configured value for advanced options.
RECONFIGURE
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 0
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GO

2、新建立一个作业,名称命名为“MyDb完全备份”,在分类下面选择“数据库维护”,然后新建立作业第一个步骤,步骤名为“对数据进。
DECLARE @strSql VARCHAR(1000)
,@strSqlCmd VARCHAR(1000)
,@timeDateDiff INT
SET @timeDateDiff = DATEDIFF(week,0,GETDATE())
SET @timeDateDiff = CASE DATEPART(WEEKDAY,GETDATE())
WHEN 1 THEN @timeDateDiff -1
ELSE @timeDateDiff END
SET @strSql='E:\DataBackup\LiangJiaLun219' -- 备份目录及备份的文件头
+CONVERT(CHAR(8),DATEADD(week, @timeDateDiff,0),112) -- 完全备份日期
+'_0100' -- 完全备份时间
+'完全备份'
SET @strSqlCmd= @strSql+'.BAK' --备份文件的扩展名
BACKUP DATABASE [LiangJiaLun219]
TO DISK = @strSqlCmd WITH INIT
,NOUNLOAD
,NAME = N'LiangJiaLun219 备份'
,NOSKIP
,STATS = 10
,NOFORMAT

3、然后开始执行对数据库的压缩,在步骤中再新建一个作业,步骤名为“压缩数据库”,然后在命令框中输入如下的SQL代码:
DECLARE @strSql VARCHAR(1000)
,@strSqlCmd VARCHAR(1000)
,@timeDateDiff INT
,@strWeekDay VARCHAR(20)
SET @timeDateDiff= DATEDIFF(week,0,GETDATE())
SET @timeDateDiff= CASE DATEPART(WEEKDAY,GETDATE())
WHEN 1 THEN @timeDateDiff-1
ELSE @timeDateDiff END
SET @strSql='E:\DataBackup\LiangJiaLun219' -- 备份目录及备份的文件头
+CONVERT(CHAR(8),DATEADD(week,@timeDateDiff,0),112) -- 完全备份日期
+'_0100' -- 完全备份时间
+'完全备份'
SET @strWeekDay= CASE DATEPART(WEEKDAY,GETDATE()) WHEN 1 THEN '星期天'
WHEN 2 THEN '星期一'
WHEN 3 THEN '星期二'
WHEN 4 THEN '星期三'
WHEN 5 THEN '星期四'
WHEN 6 THEN '星期五'
WHEN 7 THEN '星期六' END
SET @strSqlCmd= 'ECHO 压缩开始日期: '+CONVERT(VARCHAR(20),GETDATE(),120)+' '+@strWeekDay+' >> E:\DataBackup\CompressDataBase\LiangJiaLun219'+CONVERT(CHAR(6),DATEADD(week,@timeDateDiff,0),112)+'.txt'
EXEC master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUT
SET @strSqlCmd= 'RAR.EXE A -R '+@strSql+'.RAR '+@strSql+'.BAK >> E:\DataBackup\CompressDataBase\LiangJiaLun219'+CONVERT(CHAR(6),DATEADD(week,@timeDateDiff,0),112)+'.txt'
PRINT LEN(@strSqlCmd)
PRINT (@strSqlCmd)
EXEC master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUT
SET @strSqlCmd= 'ECHO 压缩日期: '+CONVERT(VARCHAR(20),GETDATE(),120)+' '+@strWeekDay+' >> E:\DataBackup\CompressDataBase\LiangJiaLun219'+CONVERT(CHAR(6),DATEADD(week,@timeDateDiff,0),112)+'.txt'
EXEC master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUT

4、设定计划任务
5、如果执行一下代码 首先必须安装WinRar 然后 在环境变量中---系统环境变量 Path 中 把Rar.exe 的路径加进去 (如:C:/Program Files/WinRar/) 这样就可以了。只需要加路径。。。不需要Rar.exe。

❷ 用vb.net对sql多数据库压缩备份为一个文件

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Text;

using _5dRss.Const;
using _5dRss.lib.Data.Tool;

public partial class admin_admin_dbmanage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//生成备份文件列表
ListBackupFiles();

if (!Page.IsPostBack)
{
Showmsg.Visible = false;

//数据库路径
lilDBPath.Text = HttpContext.Current.Request.PhysicalApplicationPath + "App_Data\\" + ConfigurationSettings.AppSettings["DBFile"];

//新建一个 FileInfo 对象,并获得数据库文件的大小,然后转换单位为KB
FileInfo myFileInfo = new FileInfo(lilDBPath.Text);
lilDBSize.Text = Convert.ToString(myFileInfo.Length/1024) + " KB";

//如果两个参数都不为空,则继续执行
if (Request.QueryString["cmd"] != null && Request.QueryString["source"] != null)
{
//备份数据库原文件名
string sourceFileName = Request.QueryString["source"];

//如果 cmd 参数为 DelFile
if (Request.QueryString["cmd"].Equals("DelFile"))
{
//删除备份数据库文件
File.Delete(HttpContext.Current.Request.PhysicalApplicationPath + "Backup\\" + sourceFileName);

//刷新备份文件列表
ListBackupFiles();

Showmsg.Visible = true;
Showmsg.Text = "<div align='center' style='margin-bottom:8px;'><img src='images/aL.gif' style='margin-bottom:-6px;'/><span class='alertTxt'>删除备份数据库成功!</span><img src='images/aR.gif' style='margin-bottom:-6px;'/></div>";
}

//如果 cmd 参数为 Restore
if (Request.QueryString["cmd"].Equals("Restore"))
{
//用备份文件覆盖原文件
File.Copy(HttpContext.Current.Request.PhysicalApplicationPath + "Backup\\" + sourceFileName, HttpContext.Current.Request.PhysicalApplicationPath + "App_Data\\" + ConfigurationSettings.AppSettings["DBFile"], true);

//刷新备份文件列表
ListBackupFiles();

Showmsg.Visible = true;
Showmsg.Text = "<div align='center' style='margin-bottom:8px;'><img src='images/aL.gif' style='margin-bottom:-6px;'/><span class='alertTxt'>还原备份数据库成功!</span><img src='images/aR.gif' style='margin-bottom:-6px;'/></div>";
}
}
}
}

protected void lnkbtnCompactDB_Click(object sender, EventArgs e)
{
//压缩修复数据库
AccessDBtool.CompactAccessDB(SysConfig.ConnectionString, HttpContext.Current.Request.PhysicalApplicationPath + "App_Data\\" + ConfigurationSettings.AppSettings["DBFile"]);

Showmsg.Visible = true;
Showmsg.Text = "<div align='center' style='margin-bottom:8px;'><img src='images/aL.gif' style='margin-bottom:-6px;'/><span class='alertTxt'>压缩修复数据库成功!</span><img src='images/aR.gif' style='margin-bottom:-6px;'/></div>";
}

protected void lnkbtnBackupDB_Click(object sender, EventArgs e)
{
string sourceFileName = HttpContext.Current.Request.PhysicalApplicationPath + "App_Data\\" + ConfigurationSettings.AppSettings["DBFile"];
string destFileName = HttpContext.Current.Request.PhysicalApplicationPath + "Backup\\" + "Backup_";
destFileName += DateTime.Now.ToString("yyyyMMddHHmmss");
destFileName += ".mbk";

//将数据库文件Copy到Backup目录,如果有重名文件就覆盖原文件
File.Copy(sourceFileName, destFileName, true);

//生成备份文件列表
ListBackupFiles();

Showmsg.Visible = true;
Showmsg.Text = "<div align='center' style='margin-bottom:8px;'><img src='images/aL.gif' style='margin-bottom:-6px;'/><span class='alertTxt'>备份数据库成功!</span><img src='images/aR.gif' style='margin-bottom:-6px;'/></div>";
}

/// <summary>
/// 生成备份文件列表
/// </summary>
/// <returns>文件列表,文件详细信息及操作选项的HTML代码</returns>
public void ListBackupFiles()
{
//如果目录不存在则创建次目录
if (!Directory.Exists(HttpContext.Current.Request.PhysicalApplicationPath + "Backup\\"))
Directory.CreateDirectory(HttpContext.Current.Request.PhysicalApplicationPath + "Backup\\");

DirectoryInfo mydir = new DirectoryInfo(HttpContext.Current.Request.PhysicalApplicationPath + "Backup\\");
StringBuilder sb = new StringBuilder();

foreach (FileInfo f in mydir.GetFiles())
{
sb.Append("<a href='backup/" + f.Name + "' target='_blank'><img border='0' src='images/mdb.gif' style='margin:4px 3px -3px 0px'/>" + f.Name + "</a><a href='?cmd=DelFile&source=" + f.Name + "' title='删除备份文件'>删除</a> | <a href='?cmd=Restore&source=" + f.Name + "' title='删除备份文件'>还原数据库</a> | " + f.Length/1024 + " KB | " + f.CreationTime + "<br />");
}

lilBackupFileList.Text = sb.ToString();
}
}
把下面这句换成你的数据库地址:
//数据库路径
// lilDBPath.Text = HttpContext.Current.Request.PhysicalApplicationPath + "App_Data\\" + ConfigurationSettings.AppSettings["DBFile"];

❸ 如何让SQL Server数据库自动备份并压缩

从sqlserv2008开始备份都有自动压缩功能,不需要再额外压缩。可以在实例的属性中查看是否有开启压缩备份。
自动备份只需要加任务计划选择定时执行就可以了。
两项用自带的功能就完全能够实现

❹ SQL Server如何备份并压缩备份文件

答:SQLSERVER2000 备份 例1:(备份) 1 use master 2 declare @path='c:aazy.bak' 3 backup database zy to 4 disk=@path with noinit 说明: 1 使用系统库 2 设置备份的路径及文件名,注意是用单引号引用. 3 需备份的数据库 4 设置备份的驱动器,将路径设给驱动器,再设定备份的方式(重写或覆盖) 例2:(压缩备份的数据库文件) use master exec xp_makecab 'c:m.cab',mszip,1,'c:aazy.bak' exec xp_cmdshell ' c:123.cab', 'd:123.cab' 说明: 'c:m.cab' 压缩备份的名称 mszip 压缩方式 'c:aazy.bak' 被压缩文件的路径 到另一个目录保存关键字:MYSQL相关文章:master数据库中两个非常有用的存储过程如何利用存储过程和触发器来管理数据轻松应对创建存储过程时出现失败的情况深入了解存储过程的编写经验和优化措施通过实例讲解由浅入深学会存储过程

❺ SQL Server备份数据库时的压缩比能达多少

这个不确定,主要看空闲空间比和数据的可压缩性。一般情况下大概是1G可以压缩到150M~200M左右

热点内容
安卓和ios步数哪个准确 发布:2025-01-24 13:12:13 浏览:289
怎么给电脑换配置 发布:2025-01-24 13:04:04 浏览:919
如何修改服务密码10086 发布:2025-01-24 12:44:27 浏览:512
dosftp连接 发布:2025-01-24 12:35:56 浏览:802
编程来炒股 发布:2025-01-24 12:35:14 浏览:854
python正则中括号 发布:2025-01-24 12:32:08 浏览:584
配置排列用英语怎么说 发布:2025-01-24 12:32:00 浏览:607
led流水灯c语言程序 发布:2025-01-24 12:28:15 浏览:46
苹果平板锁屏密码在哪里 发布:2025-01-24 12:16:41 浏览:958
网校c语言 发布:2025-01-24 12:12:15 浏览:787