在SQL Server 2008数据库中实现数据压缩
sqlserver2008数据库日志文件压缩截断方法
sqlserver2008数据库⽇志⽂件压缩截断⽅法SQL Server 2008下⽇志清理⽅法2011-05-03 17:12每次看到暴涨的数据库⽇志就有些头⼤,于是乱搜⼀通找个办法把⽇志⼲掉,下次⼜头⼤,⼜搜半天,于是还是写篇blog,不⽤乱找了。
1.将数据库设置成简单模式选择要收缩的数据库,点右键属性->选项,选择简单模式2.选择任务->收缩->⽂件3.选择⽇志或者⽤如下语句代码USE [master]GOALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE DNName SET RECOVERY SIMPLEGOUSE DNNameGODBCC SHRINKFILE (N'LogFileName' , 0,TRUNCATEONLY)GOUSE [master]GOALTER DATABASE DNName SET RECOVERY FULL WITH NO_WAITGOALTER DATABASE DNName SET RECOVERY FULLGOServer 2000要清理使⽤的是dump语句,但是在SQL ⾥,这个语句不管⽤了,如果⽇志⽂件很⼤,⽐如超过1G,就需要截断⼀下⽇志⽂件以加快sqlserver的运⾏速度,在SQL Server2008⾥,⽅法改为:有数据库 xxdb 在 SQL Server 2008 下,⽇志⽂件已经超过1G。
以往使⽤BACKUP语句-BACKUP LOG xxdb WITH NO_LOG 已经失效,在查阅 MSDN 之后发现 MS 提供的标准截断⽇志语句已经变为了 “BACKUP LOG 语句不指定 WITH COPY_ONLY”使⽤语句 BACKUP LOG xxdb to disk='x:\work\1.bak' 将⽇志⽂件备份,并截断⽇志⽂件。
SQL Server数据库压缩技巧指南
SQL Server数据库压缩技巧指南中的数据库数据文档增长事务日志文档你能够最大限度地缩小数据库吗?(一)我经常看见人们制定定期缩小数据库文件(数据或T-Log)的SQL Server维护计划和定制任务。
我通常也会建议我的客户和同事除非他们要研究数据库增长原因,否则不要缩小数据库文件,尤其是在一般基础上不要这么做。
我曾经多次和那些更多关注磁盘空间而不是性能的人们讨论过这个话题,所以在这里我决定进行一下测试来证明我所说的属实。
此外我还要告诉大家数据库文件在事务办理过程中增长对SQL Server性能会带来什么样的影响。
我将在以下几个增长环境中进行测试:1、数据库数据文件增长2、数据库T-log增长3、Tempdb增长这是本系列中的第一篇技巧,即检测SQL Server中的数据库数据文件增长。
测试环境硬件和软件配置我进行测试的系统硬件和软件配置如下:你能够最大限度地缩小数据库吗?(三)结果总结将结果放在表格中进行比较,比较项目包括CPU、读和写意及第一个循环和第二个循坏之间的间隔时间,首先是文件增长,后来就不会出现文件增长的情况。
这里有两个地方进行的比较:百分比不同(第二环节和第一个环节之间的比为*100)并且不同的处数也不同((<First loop is > - <Second loop is >)。
如果得到的是正数,那就是说第二个环节进行得比较好。
如果是负数,意思就相反。
在每个比较表的最后,比较得出的平均值就是这三次重复得到的结果平均值。
在这篇文章的最后,我们通过一个表来比较一下所有测试过程中所得到的平均值。
测试1:原始文件大小=256目标文件大小=8448小事务(一次1行),总行数:8160文件增长大小为1MB图3下面是连续执行三次上述代码所得到的SQL Profiler结果(我清除了调试查询):你能够最大限度地缩小数据库吗?(四) 结果总结测试2原始文件大小=256目标文件大小=34816小事务(一次1行),总行数:33373文件增长大小为1MB现在我们来测试一下插入更多数据。
sql server 压缩数据库方法
sql server 压缩数据库方法在SQL Server 中,可以使用几种方法来压缩数据库。
以下是其中一些方法:1. 使用 T-SQL 脚本:可以使用 T-SQL 脚本来压缩数据库。
例如,使用 `ALTER DATABASE` 语句和 `REBUILD_LOG` 或 `REBUILD_FILE` 子句来压缩数据库日志和文件。
```sql-- 压缩日志文件ALTER DATABASE [YourDatabaseName]REBUILD_LOG;-- 压缩数据文件ALTER DATABASE [YourDatabaseName]REBUILD_FILE (N'LogicalFileName', N'NewFileName', 1);```2. 使用 SQL Server Management Studio (SSMS):在 SQL Server Management Studio 中,你可以右击数据库 -> 任务 -> 收缩 -> 文件或文件组。
这将打开一个对话框,你可以选择收缩数据库的方法和设置。
3. 使用 ALTER DATABASE 语句:你可以使用 ALTER DATABASE 语句来设置数据库的自动收缩选项。
例如:```sqlALTER DATABASE [YourDatabaseName]SET AUTO_SHRINK ON;```请注意,自动收缩通常不是一个好的做法,因为它可能会影响性能并导致大量的日志操作。
4. 使用第三方工具:市场上有很多第三方工具,如 Redgate's SQL Compact,可以帮助你更有效地压缩数据库。
这些工具通常提供更高级的压缩选项和更好的性能。
5. 优化数据库设计:在某些情况下,压缩数据库可能不是一个解决方案。
例如,如果数据库太大,可能需要重新考虑数据库设计,例如通过规范化、反规范化、分区或使用其他技术来减少数据库的大小。
sqlserver2008 收缩数据库方法
sqlserver2008 收缩数据库方法
在SQL Server 2008 中,您可以使用以下方法来收缩数据库:
1. 使用SHRINK DATABASE 命令:
```sql
SHRINK DATABASE [YourDatabaseName];
```
这将收缩整个数据库文件。
请注意,这种方法可能会导致数据库文件中的数据碎片,并降低性能。
2. 使用SHRINK FILE 命令:
```sql
SHRINK FILE [YourLogicalFileName];
```
这将收缩指定的数据库文件。
您需要将`YourLogicalFileName` 替换为逻辑文件名。
这种方法只会收缩指定的文件,而不会影响整个数据库。
3. 使用DBCC SHRINKDATABASE 和DBCC SHRINKFILE 命令:
```sql
DBCC SHRINKDATABASE (YourDatabaseName, TargetSizeInMB);
DBCC SHRINKFILE (YourLogicalFileName, TargetSizeInMB);
```
这些命令提供了更多的选项和灵活性,允许您指定收缩的目标大小(以MB 为单位)。
请注意,这些命令可能需要一些时间来执行,具体取决于数据库的大小和目标大小。
请注意,频繁地收缩数据库可能会对性能产生负面影响,并导致数据碎片。
在大多数情况下,最好避免频繁地收缩数据库,而是使用定期维护和备份策略来管理数据库大小。
如何让SQL Server数据库自动备份并压缩
如何让 SQL Server 数据库自动备份并压缩如果 SQL Server 代理没有启动, 我们先把其启动, 然后新建立一个作业, 名称命名为“MyDb 完全备份 完全备份”, 在分类下面选择“数据库维护”,然后新建立作业第一个步骤,步骤名为“对数据进行完全备份”,然后在命 令框中输入如下的 SQL 代码:DECLARE @strSqlVARCHAR(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='D:\DataBase\BackData\MyDb_' -- 备份目录及备份的文件头 +CONVERT(CHAR(8),DATEADD(week, @timeDateDiff,0),112) -- 完全备份日期 +'_0100' +'完全备份' SET @strSqlCmd= @strSql+'.BAK' --备份文件的扩展名 -- 完全备份时间BACKUP DATABASE [MyDb] TO DISK = @strSqlCmd WITH INIT ,NOUNLOAD ,NAME = N'MyDb 备份' ,NOSKIP ,STATS = 10 ,NOFORMAT操作如图一:然后开始执行对数据库的压缩 压缩,在步骤中再新建一个作业,步骤名为“压缩数据库”,然后在命令框中输入 压缩 如下的 SQL 代码:DECLARE @strSqlVARCHAR(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='D:\DataBase\BackData\MyDb_' -- 备份目录及备份的文件头 +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 '星期六' ENDSET @strSqlCmd= 'ECHO 压缩开始日期: '+CONVERT(VARCHAR(20),GETDATE(),120)+' '+@strWeekDay+' >> D:\DataBase\BackData\CompressDataBase\MyDb_'+CONVERT(CHAR(6),DATEADD(week, @timeDateDiff,0),112)+'.txt' EXEC master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUTSET @strSqlCmd= 'RAR.EXE A -R '+@strSql+'.RAR '+@strSql+'.BAK >> D:\DataBase\BackData\CompressDataBase\MyDb__'+CONVERT(CHAR(6),DATEADD(week, @timeDateDiff,0),112)+'.txt' PRINT LEN(@strSqlCmd) PRINT (@strSqlCmd)EXEC master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUTSET @strSqlCmd= 'ECHO 压缩日期: '+CONVERT(VARCHAR(20),GETDATE(),120)+' '+@strWeekDay+' >> D:\DataBase\BackData\CompressDataBase\MyDb_'+CONVERT(CHAR(6),DATEADD(week, @timeDateDiff,0),112)+'.txt' EXEC master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUT操作如图二:完成后我们可以看到操作步骤的对话框,如图三:图三 数据完全备份的步骤我们对照上图,注意两点,第一个是步骤 1“成功时”这一列的显示,当成功的时候转到下一步,“失败 时”当失败的时候失败后退出,步骤 2“成功时”当成功的时候成功后退出,“失败时”当失败时失败后退出。
sqlserver数据库压缩步骤
数据库压缩是一种优化数据库性能的方法,通过压缩数据来减少磁盘空间的占用,同时也能加速备份和恢复速度,减少资源和性能占用。
本文将介绍如何在SQL Server数据库中启用压缩备份策略,并进行压缩操作。
1. 首先需要打开数据库对象资源管理器,右键单击需要启用压缩备份策略的服务器,然后打开属性对话框。
2. 单击数据库设置节点,建立新的备份媒体。
同时,需要注意备份媒体的文档格式、大小等问题。
3. 选择要压缩的表或存储过程,右键单击,选择“属性”。
4. 在“选项”选项卡中,勾选“压缩”复选框。
然后可以根据需要调整压缩级别,默认为“高”。
5. 在“压缩方式”下拉列表中选择压缩方式,建议选择“存储过程压缩”,这是SQL Server提供的一种高效的压缩方式,可以有效地减少存储过程的体积。
6. 最后点击“确定”,完成设置并保存更改。
通过上述步骤,可以在SQL Server数据库中启用压缩备份策略,并对特定的表或存储过程进行压缩。
注意,压缩备份和非压缩备份不能同时存在,老版本无法读取新版本的压缩备份。
在进行数据库压缩时,需要注意以下几点:1. 压缩可能会影响数据库性能,因此应在非繁忙时间进行压缩操作。
2. 如果要在相同服务器上同时压缩多个数据库,建议将其放在不同的时间段进行,避免同时压缩带来的性能问题。
3. 对于大数据量的表或存储过程,建议分批进行压缩操作,避免一次性压缩导致的性能下降。
4. 对于备份或还原数据库的操作,建议在压缩前进行,以确保备份和还原过程中不会对压缩的数据产生影响。
总之,数据库压缩是一种有效的优化数据库性能的方法,通过减少磁盘空间的占用和加速备份和恢复速度,可以提高数据库的性能和效率。
SQLserver数据库压缩空间
SQLserver数据库压缩空间
SQL server数据库,在⼿动删除或者⾃动删除数据后,查看数据库物理⽂件发现占⽤空间并没有释放,果断采⽤万能的重启。
(反正是⾃⼰⽤的⼀个服务器,随便玩。
如果不是只有⾃⼰⽤的服务器,还是建议让运维或者DBA来做)。
服务器重启后发现还是没有释放空间,emmmmmm。
那就请教百度⽼师了。
⽹友的解答是,SQL server数据库不会⾃⼰压缩已经扩展的空间,如果需要压缩需要⼿动操作。
压缩空间的⽅式有两种:1、数据库。
2、⽂件。
在要收缩空间的数据库上右键--》任务--》收缩--》1、数据库,2⽂件(⾃⼰选择)。
然后就等着吧。
两个会有不同,数据库会将该数据库所有的未使⽤空间进⾏收缩。
适⽤于数据和⽇志都有清空或删除。
选择⽂件,
有三种可以进⾏收缩,数据、⽇志和filestream 数据。
前两个⽐较熟悉,就是对数据和⽇志占⽤空间进⾏收缩,第三个⾃⼰也不是很了解,建议百度下,不过很多地⽅都有讲解。
我选择的是数据库收缩,还是很慢的,⼤家等着吧。
如何让SQL Server数据库自动备份并压缩
如何让 SQL Server 数据库自动备份并压缩如果 SQL Server 代理没有启动, 我们先把其启动, 然后新建立一个作业, 名称命名为“MyDb 完全备份 完全备份”, 在分类下面选择“数据库维护”,然后新建立作业第一个步骤,步骤名为“对数据进行完全备份”,然后在命 令框中输入如下的 SQL 代码:DECLARE @strSqlVARCHAR(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='D:\DataBase\BackData\MyDb_' -- 备份目录及备份的文件头 +CONVERT(CHAR(8),DATEADD(week, @timeDateDiff,0),112) -- 完全备份日期 +'_0100' +'完全备份' SET @strSqlCmd= @strSql+'.BAK' --备份文件的扩展名 -- 完全备份时间BACKUP DATABASE [MyDb] TO DISK = @strSqlCmd WITH INIT ,NOUNLOAD ,NAME = N'MyDb 备份' ,NOSKIP ,STATS = 10 ,NOFORMAT操作如图一:然后开始执行对数据库的压缩 压缩,在步骤中再新建一个作业,步骤名为“压缩数据库”,然后在命令框中输入 压缩 如下的 SQL 代码:DECLARE @strSqlVARCHAR(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='D:\DataBase\BackData\MyDb_' -- 备份目录及备份的文件头 +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 '星期六' ENDSET @strSqlCmd= 'ECHO 压缩开始日期: '+CONVERT(VARCHAR(20),GETDATE(),120)+' '+@strWeekDay+' >> D:\DataBase\BackData\CompressDataBase\MyDb_'+CONVERT(CHAR(6),DATEADD(week, @timeDateDiff,0),112)+'.txt' EXEC master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUTSET @strSqlCmd= 'RAR.EXE A -R '+@strSql+'.RAR '+@strSql+'.BAK >> D:\DataBase\BackData\CompressDataBase\MyDb__'+CONVERT(CHAR(6),DATEADD(week, @timeDateDiff,0),112)+'.txt' PRINT LEN(@strSqlCmd) PRINT (@strSqlCmd)EXEC master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUTSET @strSqlCmd= 'ECHO 压缩日期: '+CONVERT(VARCHAR(20),GETDATE(),120)+' '+@strWeekDay+' >> D:\DataBase\BackData\CompressDataBase\MyDb_'+CONVERT(CHAR(6),DATEADD(week, @timeDateDiff,0),112)+'.txt' EXEC master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUT操作如图二:完成后我们可以看到操作步骤的对话框,如图三:图三 数据完全备份的步骤我们对照上图,注意两点,第一个是步骤 1“成功时”这一列的显示,当成功的时候转到下一步,“失败 时”当失败的时候失败后退出,步骤 2“成功时”当成功的时候成功后退出,“失败时”当失败时失败后退出。
使用MAXDOP重复利用多处理器启用SQL Server数据压缩功能
随着数据的越来越大,数据库也越来越大,同时伴随着磁盘空间的增长以及性能的下降。
使用SQLServer 2008的数据压缩功能可以大大的减小数据量提高查询性能,尤其对于数据仓库非常有用。
(BestPractices for Data Warehousing with SQL Server 2008:
但是启用数据压缩是一个很耗费CPU资源的动作,这个过程我们可以充分发挥多CPU的优势?如何实现呢?
比如针对客户表启用PAGE压缩,我们会使用下面的脚本:
ALTER TABLE customerREBUILDWITH (DATA_COMPRESSION=PAGE);
由于数据库使用了8颗CPU在维护期间没有其他应用,这样我们可以充分使用8颗CPU并行执行压缩:
ALTER TABLE customerREBUILDWITH(DATA_COMPRESSION=PAGE,MAXDOP=8);
下面一张图可以看到使用MAXDOP以后的效果。
sql server数据库文件的压缩方法
sql server数据库文件的压缩方法如果需要压缩sql server数据库文件,应该怎么操作呢?下文将为您介绍sql server数据库文件的压缩详细的方法步骤,希望能够帮助到您兰州白癜风专科医院。
请按步骤进行,未进行前面的步骤时,请不要做后面的步骤,以免损坏你的数据库.一般不建议做第4,6两步,第4步不安全,有可能损坏数据库或丢失数据。
第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复。
1.清空日志DUMP TRANSACTION库名WITH NO_LOG2.截断事务日志BACKUP LOG数据库名WITH NO_LOG3.收缩数据库文件(如果不压缩,数据库的文件不会减小企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了收缩数据库文件(也可以用SQL语句来完成--收缩数据库DBCC SHRINKDATABASE(客户资料)--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select*from sysfilesDBCC SHRINKFILE(1)4.为了最大化的缩小日志文件(如果是sql7.0,这步只能在查询分析器中进行)a.分离数据库:企业管理器--服务器--数据库--右键--分离数据库b.在我的电脑中删除LOG文件c.附加数据库:企业管理器--服务器--数据库--右键--附加数据库此法将生成新的LOG,大小只有500多K或用代码:下面的示例分离pubs,然后将pubs中的一个文件附加到当前服务器兰州白癜风治疗。
SQL Server 2008之备份压缩
/msoft/2008-01-25/200801251036641_2.shtml经过漫长的等待之后,即将发布的SQL Server 2008数据库终于内置了压缩备份技术。
在此之前的SQL Server 2005,等版本都只能通过第三方备份软件(如SQLZip等)进行压缩。
本文将以SQL Server 2008 的11月CTP测试版为例,为大家详细介绍如何分别在压缩和不压缩的情况下进行全备份(Full)、差异备份(Differential)和事务日志备份(Transactional log),以及怎样在默认设置下启动压缩功能。
首先让我们创建一个名为“MyDB”的数据库,如下所示:在D盘创建一个Backup文件夹,如图二所示:接下来让我们进行一次全备份,如下所示(结果详见图三):Backup Database MyDB to disk ='d:\Backup\MyDB_Full.bak' with init在“MyDB”数据库的“MyTable”表中再添加更多的数据行(例如1000行),如下所示:以下是引用片段:接下来,进行一次事务日志备份,如下所示(结果详见图四):Backup log MyDB to disk ='d:\Backup\MyDB_TLog_1.bak' with init默认状态下,SQL Server是不会压缩备份的。
我们可以通过以下两个途径对备份进行压缩:1)改变SQL Server的默认设置,使其对所有备份执行压缩操作;2)在备份语句中加入“With COMPRESSION“的关键词选项。
本文此前对MyDB数据库所执行的全备份、事务日志备份都是没有进行压缩。
这是SQL Server的默认设置。
下面我们来对数据库进行一次压缩全备份,如下所示(结果详见图五):Backup Database MyDB to disk ='d:\Backup\MyDB_Full2.bak' with COMPRESSION从图五中,你可以看到MyDB_Full2.bak文件比MyDB_Full.Bak和MyDB_Tlog_1.bak都要小得多。
Sql Server数据库压缩方法
Sql Server数据库压缩方法Sql Server数据库用了一段时间以后,发现数据大小会猛增,最多时增加到十几G,而实际数据占有量其实只有5G左右。
这样的后果就导致数据库运行缓慢,且大大占用磁盘空间。
经过多方研究,最终找到了压缩数据库的方法。
下面将详细介绍一下这种方法的操作步骤:1.重建索引数据库长期使用之后,索引会占用大量的空间,并且这些空间不能直接清理,这时可以重建索引,重建索引的sql脚本语句如下:SET NOCOUNT ON;DECLARE@objectid int;DECLARE@indexid int;DECLARE@partitioncount bigint;DECLARE@schemaname nvarchar(130);DECLARE@objectname nvarchar(130);DECLARE@indexname nvarchar(130);DECLARE@partitionnum bigint;DECLARE@partitions bigint;DECLARE@frag float;DECLARE@command nvarchar(4000);If Object_Id('Tempdb.dbo.#work_to_do')Is Not Null drop table#work_to_doSELECTobject_id AS objectid,index_id AS indexid,partition_number AS partitionnum,avg_fragmentation_in_percent AS fragINTO#work_to_doFROM sys.dm_db_index_physical_stats(DB_ID(),NULL,NULL,NULL,'LIMITED')WHERE avg_fragmentation_in_percent> 10.0 AND index_id> 0;DECLARE partitions CURSOR local FOR SELECT*FROM#work_to_do;OPEN partitions;WHILE (1=1)BEGIN;FETCH NEXTFROM partitionsINTO@objectid,@indexid,@partitionnum,@frag;IF@@FETCH_STATUS< 0 BREAK;SELECT@objectname=QUOTENAME(),@schemaname=QUOTENAME()FROM sys.objects AS oJOIN sys.schemas as s ON s.schema_id=o.schema_idWHERE o.object_id=@objectid;SELECT@indexname=QUOTENAME(name)FROM sys.indexesWHERE object_id=@objectid AND index_id=@indexid;SELECT@partitioncount=count(*)FROM sys.partitionsWHERE object_id=@objectid AND index_id=@indexid;IF@frag< 30.0SET@command=N'ALTER INDEX'+@indexname+N' ON '+@schemaname+N'.'+@objectname+ N'REORGANIZE';IF@frag>= 30.0SET@command=N'ALTER INDEX'+@indexname+N' ON '+@schemaname+N'.'+@objectname+ N'REBUILD';IF@partitioncount> 1SET@command=@command+N'PARTITION='+CAST(@partitionnum AS nvarchar(10));EXEC (@command);PRINT N'Executed:'+@command;END;CLOSE partitions;2.数据库行压缩和页压缩经长期测试发现,TPMS_PaperResultReport这张表占用很大的空间,执行以下sql 脚本语句,可以压缩这张表的占用空间。
sqlserver数据库压缩与数据库日志(ldf)压缩方法分享
sqlserver数据库压缩与数据库⽇志(ldf)压缩⽅法分享 操作很简单,具体不步骤如下:打开你mdb数据库,⼯具-->数据库实⽤⼯具-->压缩和修复数据库(c)...⼀般情况下,SQL数据库的收缩并不能很⼤程度上减⼩数据库⼤⼩,其主要作⽤是收缩⽇志⼤⼩,应当定期进⾏此操作以免数据库⽇志过⼤1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根⽬录中依次点开Microsoft SQLServer-->SQLServer组-->双击打开你的服务器-->双击打开数据库⽬录-->选择你的数据库名称(如论坛数据库Forum)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择"简单",然后按确定保存2、在当前数据库上点右键,看所有任务中的收缩数据库,⼀般⾥⾯的默认设置不⽤调整,直接点确定3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作⽅法同第⼀点,因为⽇志在⼀些异常情况下往往是恢复数据库的重要依据不过服务器上可以⽤下⾯的语句在查询分析器中执⾏复制代码代码如下:DUMP TRANSACTION [jc8] WITH NO_LOGBACKUP LOG [jc8] WITH NO_LOGDBCC SHRINKDATABASE([jc8])jc8为数据库名,来实现jc8.ldf⽂件的清理。
问:SQLServer中的事务⽇志应该怎样压缩和删除?答:具体⽅法有3种。
⽅法⼀:第⼀步:backup log database_name with no_log或者 backup log database_name with truncate_only-- no_log和truncate_only是在这⾥是同义的,随便执⾏哪⼀句都可以。
第⼆步:1.收缩特定数据库的所有数据和⽇志⽂件,执⾏:dbcc shrinkdatabase (database_name,[,target_percent])-- database_name是要收缩的数据库名称;target_percent是数据库收缩后的数据库⽂件中所要的剩余可⽤空间百分⽐。
SQL SERVER 2008 笔记之行压缩和页压缩
2008 压缩行压缩SQL SERVER 2008 引进了行压缩这个新特性,只有企业版具有该新特性.行压缩只需要最低的空间对行数据进行压缩.行压缩可以在CREATE一个表,索引或者ALTER一个表,索引的时候进行创建.压缩可以在行级别,也可以在页级别.同样备份的时候也可以进行压缩.以下先举例说明如何创建一个表行压缩和ALTER表的时候添加行压缩.建立测试数据*/CREATE DATABASE COMPRESSION_TESTGOUSE COMPRESSION_TESTGO/* 建立一个具有行压缩的表*/CREATE TABLE Compression_tb1(id int not null identity(1,1),departid int not null,JOBdesc CHAR(2000)not null--为了效果明显一点,可以设置长点)with(DATA_COMPRESSION=ROW)--建立到有行压缩选项的表/* 可以用如下语句从新配置压缩选项*/ALTER TABLE Compression_tb1REBUILDWITH (DATA_COMPRESSION=NONE)--去除压缩选项/*以上个语句可以颠倒过来譬如先建立没有压缩选项的表,然后通过ALTER表配置获得压缩选项其中DATA_COMPRESSION有个参数NONE,ROW,PAGE下面对测试表填充垃圾数据来演示压缩的效果*/INSERT Compression_tb1(departid,JOBdesc)VALUES(CAST(RAND()*20 as int),REPLICATE('a',50))GO 100000/*数据添加好,我可以用系统SP sp_estimate_data_compression_savings 来估计使用行压缩或者页压缩可以节省多少磁盘空间.sp_estimate_data_compression_savings有个参数:需要压缩的表的架构名称、对象名称、索引ID、分区号和压缩方式。
如何给数据库备份文件压缩
如何给数据库备份文件压缩在新的2008版本的SQL SERVER 数据库中提出了备份压缩的概念,其基本的原理就是和RAR等压缩工具一样,可以让原有的备份文件体积更小,可以节省服务器备份空间。
同时相同数据的压缩的备份比未压缩备份小,所以压缩备份所需的设备I/O 通常较少,因此通常可大大提高备份速度。
提示:首先SQL SERVER 2008 以上的版本可以做备份压缩代码解析1:我们先开启CMDSHELL 用于调用DOS命令EXEC sp_configure'show advanced options', 1; RECONFIGURE;EXEC sp_configure'xp_cmdshell', 1;RECONFIGURE;2:备份数据库--你备份数据库以当天时间为后缀名declare @filename varchar(200)set@filename='F:\data\databasbackup\differentbackup\'+conver t(char(10),getdate(),120)+'.bak'--设置备份文件的路径和文件名print @filenamebackup database Alice to disk=@filename withNOINIT,NOUNLOAD,NAME='backup',NOSKIP,STATS=10,NOFORMAT--执行备份3:压缩已备份的文件--将压缩备份文件并删除原文件declare @file varchar(200)set @file='D:\WinRAR\WinRAR.exe a -ep -dfF:\data\databasbackup\differentbackup\'+convert(char(10), getdate(),120)+'.rarF:\data\databasbackup\differentbackup\'+convert(char(10), getdate(),120)+'.bak'EXEC MASTER..xp_cmdshell@file4:删除压缩备份后文件DECLARE @sql VARCHAR(500)set @sql ='delF:\data\databasbackup\differentbackup\'+convert(char(10), dateadd(dd,-2,getdate()),120)+'.rar'--找到要删除的文件并执行删除exec MASTER..xp_cmdshell@sql --执行命令在实际中,我们需要通过作业来控制语句的执行时间具体步骤如下1:创建作业2:在步骤中将以上代码写入步骤中3:在Schedules中规定作业执行的时间以上就是对数据库备份文件的压缩,希望能够帮助到大家。
sqlserver通过脚本进行数据库压缩全备份的方法【推荐】
sqlserver通过脚本进⾏数据库压缩全备份的⽅法【推荐】问题:
⽣产环境的数据库可能⽐较⼤,如果直接进⾏全备⽽不压缩的话,备份集就会占⽤了⼤量磁盘空间。
给备份⽂件的存放管理带来不便。
解决⽅案:
通过with compression显式启⽤备份压缩,指定对此备份执⾏备份压缩,覆盖服务器级默认设置。
适⽤于 SQL Server 2008和更⾼版本。
因为相同数据的压缩的备份⽐未压缩备份⼩,所以压缩备份所需的设备 I/O 通常较少,因此通常可⼤⼤提⾼备份速度。
脚本:
/*
说明:⼿动修改【DB名称】、要备份到的【路径和⽂件名】,再执⾏脚本
脚本来源:https:///zhang502219048/p/11062589.html
*/
backup database DbName to disk = 'D:\DbName.bak' --全备
with compression; --压缩备份
go
参考微软官⽅⽂档:
总结
以上所述是⼩编给⼤家介绍的sql server通过脚本进⾏数据库压缩全备份的⽅法,希望对⼤家有所帮助,如果⼤家有任何疑问欢迎给我留⾔,⼩编会及时回复⼤家的!。
SQL Server 2008的数据压缩和解密
SQL Server 2008的数据压缩和解密
佚名
【期刊名称】《网管员世界》
【年(卷),期】2010(000)018
【摘要】SOL Server 2008允许在表、索引和分区中执行数据压缩,这样不仅可以节省磁盘空间,而且允许更多数据装入RAM中,提升查询的性能。
【总页数】1页(P93-93)
【正文语种】中文
【中图分类】TP393.098
【相关文献】
1.设置SQL Server 2008群集按部就班配置置一个Windows Server 2008故障转移群集,并在它上面安装SQL Server 2008 [J], Denny Cherry; 徐瑾(译)
2.SQL Server2008DataProfilins揭示SQLServer2008集成服务中隐藏的宝藏[J], Derek Comingore; 肖欣(译者)
3.微软2008新一代企业级应用平台与开发技术——Windows Server 2008、Visual Studio 2008和SQL Server 2008 [J],
4.数据库由SQL Server7.0升级迁移至SQL Server 2008 R2操作实践 [J], 王娟;沈丽娟;王慧
5.数据库由SQL Server7.0升级迁移至SQL Server 2008 R2操作实践 [J], 王娟;沈丽娟;王慧
因版权原因,仅展示原文概要,查看原文内容请购买。
SQLSERVER压缩语句
SQLSERVER压缩语句SQLSERVER压缩语句压缩⼀条数据库语句如下:CREATE Procedure [dbo].[sp_Compress]ASBEGINDECLARE @db_name varchar(200)set @db_name='dangjiae' --数据库名DUMP TRANSACTION @db_name WITH NO_LOGBACKUP LOG @db_name WITH NO_LOGDBCC SHRINKDATABASE(@db_name)END--01.get all database nameSELECT DBNAME =DB_NAME(s_mf.database_id) INTO #DN FROMsys.master_files s_mfWHEREs_mf.state =0and-- ONLINEHAS_DBACCESS(DB_NAME(s_mf.database_id)) =1-- Only look at databases to which we have access GROUP BY s_mf.database_idORDER BY1e cursor to fetch db name-----02.01 declare cursorDECLARE cur CURSOR FORSELECT DBNAME FROM #DN-----02.02 open cursor & declare varOPEN curDECLARE@DbName VARCHAR(200)-----02.03 loop db baneFETCH NEXT FROM cur into@DbNameWHILE(@@FETCH_STATUS=0)BEGINprint'shrinking '+@DbName+' ...'-------02.04 only shink log fileexec('declare @dn varchar(200);declare @ln varchar(210);select @dn = name from '+@DbName+'.dbo.sysfiles where fileid=1select @ln = name from '+@DbName+'.dbo.sysfiles where fileid=2use ['+@DbName+'] backup log ['+@DbName+'] with no_log dbcc shrinkfile (@ln)')-------02.04 shink db file & log file-- dbcc SHRINKDATABASE (@DbName)print@DbName+' done'FETCH NEXT FROM cur INTO@DbNameEND-----02.05 colse cursorCLOSE curDEALLOCATE cur-----03.drop temp tableDROP TABLE #DN-------------------------------测试服务器的sql和⼀志经常就太⼀了,写⼀个存储过程,然后job定期执⼀,避免磁盘空间浪费。
SQL SERVER 2008R2如何建立自动收缩维护计划
SQL SERVER 2008R2如何建立自动收缩数据库SQL Server 2008中可以使用维护计划来为数据库自动收缩,减少数据库管理员的工作负担。
其使用方法如下:1)启动【SQL Server Management Studio】,在【对象资源管理器】窗口里选择【管理】——【维护计划】选项。
2)右击【维护计划】,在弹出的快捷菜单里选择【维护计划向导】选项,弹出如图所示的【维护计划向导】对话框,单击【下一步】按钮3)弹出如图所示【选择计划属性】对话框,在【名称】文本框里可以输入维护计划的名称;在【说明】文本框里可以输入维护计划的说明文字若需设定执行计划,则点击更改,进入【新建作业计划】界面,输入名称,设定执行频率等,然后点击[确定],则返回到【选择计划属性】界面,直接点【下一步】4)弹出如图所示【选择维护任务】对话框,在该对话框里可以选择多种维护任务:检查数据库完整性、收缩数据库、重新生成或组织索引、更新统计信息、清除历史记录、执行SQLServer代理作业、备份数据库等。
在本例中选择【备份数据库(完整)】复选框,其他维护任务的设置都大同小异。
(5)单击【下一步】按钮,弹出如图所示【选择维护任务顺序】对话框,如果有多个维护任务,在此可以通过【上移】和【下移】两个按钮来设置维护任务的顺序,设置完毕后单击【下一步】按钮。
(6)弹出如图所示【定义任务】对话框,在【数据库】下拉列表框里可以选择要收缩的数据库名;设置完毕后单击【下一步】按钮。
(9)弹出如图18.24所示【选择报告选项】对话框,在该对话框里可以选择如果管理维护计划报告:可以将其写入文件中,也可以通过电子邮件发送数据库管理员。
设置完毕后单击【下一步】按钮。
10)弹出如图所示【完成向导】对话框,单击【完成】按钮完成维护计划创建操作。
11)创建完维护计划后,请确认SQL Server代理是否启动:在【对象资源管理器】窗口里,右击【SQL Server代理】,在弹出的快捷菜单里选择【启动】选项。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
发布时间:2008.09.19 14:03 来源:赛迪网作者:林善茂
【赛迪网-IT技术报道】摘要:SQL Server 2008中有个有趣的新特性:数据压缩,利用该特性,我们可以减小数据表,索引以及分区的子集的大小。
本文通过例子详细介绍如何使用该特性。
SQL Server中的数据压缩功能,最早在SQL Server 2005 SP2中出现,当时针对decimail 和numeric数据类型推出了新的存储格式--vardecimal。
vardecimal存储格式允许decimal 和numeric数据类型的存储作为一个可变长度列。
这个概念已扩展在SQL Server 2008的所有固定长度的数据类型,如integer, char, 和float等数据类型。
借助数据压缩,减少了存储成本,并提高查询性能,减少I / O和增加缓冲点击率。
虽然SQL Server 2008 支持 vardecimal 存储格式;但是,由于行级压缩可实现同样的目标,因此在SQL Server 2008中不推荐使用 vardecimal 存储格式。
SQL Server 2008对于表和索引,同时支持行(ROW)和页面(Page)两种压缩模式。
下面对这两种数据压缩类型简单做个对比:
行压缩。
行压缩可以将固定长度类型存储为可变长度存储类型。
例如char(100)列储存在一个可变长度存储格式将只使用了存储量所定义的数据。
储存的“ SQL Server 2008 ”,压缩后只需要存放15个字符,而非全部100个字符,从而节省了85%的存储空间。
这是在SQL Server 2005 Service Pack 2中提供的vardecimal存储格式的思路的延伸。
同时需要注意的是,这种压缩模式,将对所有数据类型的 NULL 和 0 值进行优化,从而使它们不占用任何字节。
页面压缩模式。
这种压缩功能,建立在行压缩基础之上,通过只存储一次页面上相同事件字节来将存储的冗余数据减到最小。
使用页压缩压缩表和索引,除了采用行压缩,还采用了前缀压缩和字典压缩。
数据压缩会减少的大小您的表格或索引指标,最好是先评估一下压缩后所能节省的空间。
,估计节省空间在一个表或索引使用,无论是sp_estimate_data_compression_savings
系统存储过程还是数据压缩向导。
检查过程中,如果发现现有数据的零碎程度很高,则可能需要重新生成索引(而不是使用压缩)来减小索引的大小。
1、估算压缩后可节省的存储空间
我们可以利用sp_estimate_data_compression_savings系统存储过程或者数据压缩向导可以预估出数据表或者索引可以节省的存储空间。
以下举例说明:在AdventureWorks 数据库中使用
sp_estimate_data_compression_savings系统存储过程:
参数说明:
第一个参数是包含表或索引视图的数据库架构的名称。
如果为 NULL,则使用当前用户的默认架构。
第二个参数是索引所属的表或索引视图的名称。
第三个参数是索引的ID
第四个参数是对象中的分区号
最后一个参数是要评估的压缩的类型。
执行上面的SQL语句,我们将看到以下的执行结果:
图1 执行 SQL语句后的输出结果
注意size_with_current_compression_setting(KB)和
size_with_requested_compression_setting (KB)这两个列,这两字段将告诉您
Sales.SalesOrderDetail这个表预计可节省的空间。
如果要使用数据压缩向导,右键点击Sales.SalesOrderDetail这个表,在弹出菜单中选择Storag项中的Manage Compression子项。
图2 数据压缩菜单
这将启动数据压缩向导。
在欢迎界面中,单击“Next”,进入下一步骤。
图3 数据压缩向导欢迎界面
在选择压缩类型页面中,点击“Compression Type”这一列的下拉菜单,根据实际需要选择压缩类型。
发布时间:2008.09.19 14:03 来源:赛迪网作者:林善茂
由于执行sp_estimate_data_compression_savings系统存储过程时,我们选择了行压缩,为了便于对比,我们也选择相同选项。
选完后点击“Calculate”按钮,将看到与执行存储过程后类似的信息。
图4 数据压缩向导过程中选择压缩类型
这两种方法都可以预估出数据表或者索引可以节省的存储空间。
2、改变表的压缩选项
为了现有的未分区表能够支持压缩功能,需要使用ALTER TABLE 命令,带上 REBUILD 选项。
上面这句脚本允许sales.salesorderdetail表支持行压缩类型。
你也可以在数据压缩向导中继续往下操作,同样也能使选中表支持压缩功能:在点击了“Calculate”按钮之后,点击“Next”按钮。
在输出选项选择界面,你可以选择创建一个脚本以供复查或储存到一个文件中,立刻执行或者作为一个任务调度。
如下图所示:
对于DBA来说,因为数据压缩将成为数据库维护的一项日常事务,因此建议保存成一个脚本文件。
图5 数据压缩向导中选择输出选项
最后点“Next”继续,在结束之前,将预览数据压缩汇总信息页面。
图6 数据压缩向导汇总界面
您可能希望使用sp_estimate_data_compression_savings系统存储过程创建一个脚本,能够遍历所有的表生成一份简要报告,借助这个报告来分析哪些表或索引可以压缩。
--------------------------------------------------------------
如果您有数据库资料、建议或是相关最新技术信息等等,请联系赛迪网IT技术--数据库频道,我们会在第一时间发布、分享给广大网友。
联系信箱:dongjw# (请将"#"改为"@")
(责任编辑:董建伟)。