压缩SQL数据库及日志的详细方法

1、用BACKUP LOG database WITH NO_LOG清除日志

把数据库属性中的故障还原模型改为“简单”可以大大减慢日志增长的速度。
如果把还原模型调到简单,这样就不支持时间点还原了,但是日志文件会很小,如果数据比较重要
推荐还是把数据库的还原模型调为完全用BACKUP LOG database WITH NO_LOG命名后,会截断不活动日志,不减小物理日志文件的大小,但逻辑日志会减小,收缩数据库后会把不活动虚拟日志删除来释放空间,不会损坏数据。如果日志被截断并收缩数据库后,就不能直接用最近的一个全库备份做时间点还原,建议立即备份数据库,以防万一。
2、sql server运行中,是否能删除主数据库事务日志文件
步骤如下:

(1)、分离数据库
       企业管理器--数据库--右击你要删除日志的数据库--所有任务--分离数据库
(2)、然后删除日志文件
(3)、然后再附加数据库
       企业管理器--数据库--右击数据库--所有任务--附加数据库
       这时候只附加.mdf就可以了。
3、压缩SQL数据库及日志的详细方法
    SQL Server 2000基础教程——压缩数据库
     数据库在使用一段时间后,时常会出现因数据删除而造成数据库中空闲空间太多的情况,这时就需要减少分配给数据库文件和事务日志文件的磁盘空间,以免浪费磁盘空间。当数据库中没有数据时,可以修改数据库文件属性直接改变其占用空间,但当数据库中有数据时,这样做会破坏数据库中的数据,因此需要使用压
缩的方式来缩减数据库空间。可以在数据库属性选项中选择“Auto shrink”选项,让系统自动压缩数据库,也可以用人工的方法来压缩。人工压缩数据库有以下两种方式:
1、用Enterprise Manager 压缩数据库在Enterprise Manager 中在所要压缩的数据库上单击右键,从快捷菜单中的“所有任务(All Tasks)”中选择“Shrink Database(压缩数据库)”选项,就会出现如图6-10 所示的对话框。可以在图6-10 所示的对话框中选择数据库的压缩方式,也可以选择使用压缩计划或压缩单个文件

单击图6-10 中的“Files”按钮,会出现如图6-11 所示的压缩数据库文件对话框,可以针对每个数据库文件进行不同的压缩设置。

单击图6-10 中的“Change” 按钮,会出现如图6-12 所示的压缩计划编辑对话框,可以指定压缩计划的执行方式。单击图6-12 中的“Change” 按钮,会出现如图6-13 所示的循环工作计划编辑对话框,可以编辑计划执行的周期或时间点。设置完成后单击“OK” 按钮就开始压缩数据库,在压缩结束后会显示一个压缩情况信息框。

2、用Transact-SQL 命令压缩数据库
可以使用DBCC SHRINKDATABASE 和DBCC SHRINKFILE 命令来压缩数据库。其中DBCC HRINKDATABASE 命令对数据库进行压缩,
DBCC SHRINKFILE 命令对数据库中指定的文件进行压缩。
(1) DBCC SHRINKDATABASE
DBCC SHRINKDATABASE 命令语法如下:
DBCC SHRINKDATABASE (database_name [, target_percent]
[, {NOTRUNCATE | TRUNCATEONLY}] )
各参数说明如下:
•target_percent 指定将数据库压缩后,未使用的空间占数据库大小的百分之几。如果指定的百分比过大,超过了压缩前未使用空间所占的比例,则数据库不会被压缩。并且压缩后的数据库不能比数据库初始设定的容量小。
•NOTRUECATE
将数据库缩减后剩余的空间保留在数据库,中不返还给操作系统。如果不选择此选项,则剩余的空间返还给操作系统。
•TRUNCATEONLY
将数据库缩减后剩余的空间返还给操作系统。使用此命令时SQLServer 将文件缩减到最后一个文件分配,区域但不移动任何数据文件。选择此项后,target_percent 选项就无效了。
例6-14: 压缩数据库mytest 的未使用空间为数据库大小的20%

dbcc shrinkdatabase (mytest, 20)
运行结果如下:
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
(2) DBCC SHRINKFILE
DBCC SHRINKFILE 命令压缩当前数据库中的文件。其语法如下:
DBCC SHRINKFILE ( {file_name | file_id }
{ [, target_size] |
[, {EMPTYFILE | NOTRUNCATE | TRUNCATEONLY}] } )
各参数说明如下:
•file_id
指定要压缩的文件的鉴别号(Identification number, 即ID)
。文件的ID 号可以通过 FILE_ID()函数或如本章前面所讲述
的Sp_helpdb 系统存储过程来得到。
•target_size
指定文件压缩后的大小。以MB 为单位。如果不指定此选项,SQL
Server 就会尽最大可能地缩减文件。
•EMPTYFILE
指明此文件不再使用,将移动所有在此文件中的数据到同一文件
组中的其它文件中去。执行带此参数的命令后,此文件就可以用
ALTER DATABASE 命令来删除了。
其余参数NOTRUNCATE 和TRUNCATEONLY 与DBCC SHRINKDATABASE
命令中的含义相同。
例6-15: 压缩数据库mydb 中的数据库文件mydb_data2 的大小到
1MB。 use mydb dbcc shrinkfile (mydb_data2, 1)


3.企业管理器里面的方法:
1、打开企业管理器
2、打开要处理的数据库
3、点击最上面菜单>工具>SQL查询分析器,打开SQL查询分析器
4、在输入窗口里面输入:
Code:
DUMP TRANSACTION [数据库名] WITH NO_LOG
BACKUP LOG [数据库名] WITH NO_LOG
DBCC SHRINKDATABASE([数据库名])

点击绿色的小三角(或按F5)执行查询,等状态栏提示处理完成
即可!

程序里面的方法:
压缩数据库日志
--1.清空日志
exec('DUMP TRANSACTION ['+@dbname+'] WITH NO_LOG')
--2.截断事务日志:
exec('BACKUP LOG ['+@dbname+'] WITH NO_LOG')
--3.收缩数据库文件(如果不压缩,数据库的文件不会减小
exec('DBCC SHRINKDATABASE(['+@dbname+'])')

4、减小日志的方法:
、用如下步做了:
1、DUMP TRANSACTION 库名 WITH no_log
2、dbcc shrinkfile(logfilename)
3、收缩数据库
4、设定自动收缩。

分离数据库,删除日志文件,再附加,OK!
右击数据库--所有任务--分离or 附加

1、backup log 库名 WITH no_log
2、dbcc shrinkfile(logfilename)
3、收缩数据库
4、设定自动收缩。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: T-SQL完整备份数据库语句: ``` BACKUP DATABASE [数据库名] TO DISK = N'备份文件存储路径' WITH COMPRESSION, INIT ``` T-SQL差异备份数据库语句: ``` BACKUP DATABASE [数据库名] TO DISK = N'备份文件存储路径' WITH DIFFERENTIAL, COMPRESSION, INIT ``` 如果要将备份存储在存储过程中,可以使用以下语句: ``` CREATE PROCEDURE [dbo].[备份存储过程名] AS BEGIN SET NOCOUNT ON; DECLARE @dbname NVARCHAR(100) = N'数据库名', @filename NVARCHAR(100) = N'备份文件存储路径' DECLARE @sql NVARCHAR(1000) SET @sql = 'BACKUP DATABASE ' + @dbname + ' TO DISK = ''' + @filename + ''' WITH COMPRESSION, INIT' EXEC (@sql) END ``` 您可以根据需要修改上面的语句来实现完整备份或差异备份。 ### 回答2: T-SQL是一种用于管理和操作Microsoft SQL Server数据库的语言。在T-SQL中,可以通过完整备份和差异备份来备份数据库,并通过压缩备份存储过程来减少备份文件的存储空间。 完整备份是指将整个数据库及其所有数据和对象备份为一个完整的备份文件。可以使用T-SQL的BACKUP DATABASE语句进行完整备份。例如,以下是一个完整备份数据库的T-SQL语句示例: ``` BACKUP DATABASE [数据库名] TO DISK = N'备份文件路径' WITH COMPRESSION; ``` 其中,[数据库名]为要备份的数据库名称,[备份文件路径]为备份文件的存储路径。WITH COMPRESSION选项可以在备份时使用压缩来减少备份文件的大小。 差异备份是指备份数据库的更改部分,即与上一次完整备份之后所做的更改。可以使用T-SQL的BACKUP DATABASE语句进行差异备份。以下是一个差异备份数据库的T-SQL语句示例: ``` BACKUP DATABASE [数据库名] TO DISK = N'备份文件路径' WITH DIFFERENTIAL, COMPRESSION; ``` 其中,DIFFERENTIAL选项表示执行差异备份,COMPRESSION选项表示使用压缩进行备份。 压缩备份存储过程是一种通过压缩备份文件来减少存储空间的方法。可以创建一个存储过程来自动执行备份并使用压缩选项。以下是一个压缩备份存储过程的T-SQL示例: ``` CREATE PROCEDURE [存储过程名] AS BEGIN BACKUP DATABASE [数据库名] TO DISK = N'备份文件路径' WITH COMPRESSION; END; ``` 在这个存储过程中,可以指定要备份的数据库名称和备份文件的路径。每次调用这个存储过程时,它将自动执行完整备份并压缩备份文件。 使用T-SQL进行完整备份和差异备份,以及通过压缩备份存储过程进行备份文件的压缩,可以有效地管理数据库备份并减少备份文件的存储空间。 ### 回答3: T-SQL提供了完整备份和差异备份数据库的功能,同时还可以使用备份存储过程来压缩备份文件。 完整备份是指将整个数据库的所有数据和对象进行备份,包括数据文件、日志文件、索引和存储过程等。完整备份可以通过使用T-SQL语句中的BACKUP DATABASE命令来实现。例如,使用以下语句可以进行完整备份: BACKUP DATABASE [数据库名] TO DISK = '备份文件路径' WITH COMPRESSION; 差异备份是在完整备份的基础上,只备份自上次完整备份以来发生了更改的部分数据。差异备份可以使用T-SQL语句中的BACKUP DATABASE命令来实现。例如,使用以下语句可以进行差异备份: BACKUP DATABASE [数据库名] TO DISK = '备份文件路径' WITH DIFFERENTIAL, COMPRESSION; 备份存储过程可以用来压缩备份文件的大小,从而减少备份文件的存储空间。备份存储过程使用T-SQL语句中的BACKUP DATABASE命令和WITH COMPRESSION选项来进行压缩。例如,使用以下语句可以创建一个备份存储过程: CREATE PROCEDURE [存储过程名] AS BACKUP DATABASE [数据库名] TO DISK = '备份文件路径' WITH COMPRESSION; 使用备份存储过程时,只需要调用该存储过程即可进行备份,并且备份文件会自动进行压缩。例如,使用以下语句可以调用备份存储过程进行备份: EXEC [存储过程名]; 通过使用T-SQL的完整备份和差异备份功能,并结合备份存储过程进行压缩,我们可以灵活地备份和管理数据库,提高备份效率和节约存储空间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值