压缩SQLServer2000数据库空间

合集下载

SQLServer2000数据库收缩

SQLServer2000数据库收缩

SQLServer2000数据库收缩SQL Server 2000数据库收缩浏览次数:3203次悬赏分:50 |解决时间:2009-8-31 23:38 |提问者:gddyyc公司的数据库所在盘符空间为600G,可用空间为9M(该盘符只装了数据文件以及日志文件),数据文件大小为598G,数据库可用空间为300多G,通过企业管理器我把数据库进行了文件收缩,设置收缩至300G左右,可已经收缩了2天了,数据库还是没有收缩完成。

看任务管理器里Server的CPU占用还是有的。

想问下大家1、是不是我的数据库现在收缩失败了啊?2、大家有过对大型数据库的收缩经验吗?时间怎么这么久啊?3、为什么我按百分比收缩时总是不成功?和盘符所剩空间有关系么?4、数据库收缩的简单原理是什么啊?和盘符所剩空间有关系么?麻烦大家了。

问题补充:数据文件598G(可用300多G),日志文件2G(可用1.9G),时间长那是该有多长呢?最佳答案1、是不是我的数据库现在收缩失败了啊?答:你的数据库收缩还没有完全失败,但已经可以视为失败,因为要做完收缩遥遥无期,需要的时间将十分漫长,具体原因见第三问。

2、大家有过对大型数据库的收缩经验吗?时间怎么这么久啊?答:数据库的收缩时间与数据库大小是成正比的,数据库越大,收缩时间越长。

所以建议要定时进行数据库收缩,每年一次或几个月一次,依数据库增长速度而定。

3、为什么我按百分比收缩时总是不成功?和盘符所剩空间有关系么?答:不论是按百分比收缩还是按空间大小进行收缩,都要求数据库所在磁盘预留一定的空间,最好在15%以上。

在数据库进行收缩时,系统将把这部分预留空间作为缓冲区,用来保存和整理数据库中的数据,然后再把整理过的数据写回数据库。

像你说的这种情况,数据文件大小为598G,可用空间为9M,基本无法进行有效的数据库收缩。

建议你把数据库文件解挂后,复制到750G以上的大容量硬盘中,重新附加数据库后再进行收缩。

SQL Server数据库压缩技巧指南

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 压缩数据库方法在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. 优化数据库设计:在某些情况下,压缩数据库可能不是一个解决方案。

例如,如果数据库太大,可能需要重新考虑数据库设计,例如通过规范化、反规范化、分区或使用其他技术来减少数据库的大小。

sqlserver数据库过大,收缩方法

sqlserver数据库过大,收缩方法

sqlserver数据库过大,收缩方法English: To shrink a SQL Server database, you can use the DBCC SHRINKDATABASE command. This command will reduce the physical files of the database to a smaller size by moving pages of data from the end of the file to unoccupied space closer to the beginning of the file. However, it is important to note that shrinking a database can have negative effects on performance and should be done with caution. Before shrinking the database, it is important to identify if the database is actually too large or if there are any underlying issues causing the growth. It is also recommended to backup the database before performing any shrink operations in case any data is lost during the process. Additionally, it is important to monitor the database size regularly and implement better data management practices to prevent the database from growing too large in the future.Translated content: 要收缩 SQL Server 数据库,您可以使用 DBCC SHRINKDATABASE 命令。

sqlserver数据库压缩步骤

sqlserver数据库压缩步骤

数据库压缩是一种优化数据库性能的方法,通过压缩数据来减少磁盘空间的占用,同时也能加速备份和恢复速度,减少资源和性能占用。

本文将介绍如何在SQL Server数据库中启用压缩备份策略,并进行压缩操作。

1. 首先需要打开数据库对象资源管理器,右键单击需要启用压缩备份策略的服务器,然后打开属性对话框。

2. 单击数据库设置节点,建立新的备份媒体。

同时,需要注意备份媒体的文档格式、大小等问题。

3. 选择要压缩的表或存储过程,右键单击,选择“属性”。

4. 在“选项”选项卡中,勾选“压缩”复选框。

然后可以根据需要调整压缩级别,默认为“高”。

5. 在“压缩方式”下拉列表中选择压缩方式,建议选择“存储过程压缩”,这是SQL Server提供的一种高效的压缩方式,可以有效地减少存储过程的体积。

6. 最后点击“确定”,完成设置并保存更改。

通过上述步骤,可以在SQL Server数据库中启用压缩备份策略,并对特定的表或存储过程进行压缩。

注意,压缩备份和非压缩备份不能同时存在,老版本无法读取新版本的压缩备份。

在进行数据库压缩时,需要注意以下几点:1. 压缩可能会影响数据库性能,因此应在非繁忙时间进行压缩操作。

2. 如果要在相同服务器上同时压缩多个数据库,建议将其放在不同的时间段进行,避免同时压缩带来的性能问题。

3. 对于大数据量的表或存储过程,建议分批进行压缩操作,避免一次性压缩导致的性能下降。

4. 对于备份或还原数据库的操作,建议在压缩前进行,以确保备份和还原过程中不会对压缩的数据产生影响。

总之,数据库压缩是一种有效的优化数据库性能的方法,通过减少磁盘空间的占用和加速备份和恢复速度,可以提高数据库的性能和效率。

SQLServer2000收缩数据库文件至最小的空间会影响数据库性能此

SQLServer2000收缩数据库文件至最小的空间会影响数据库性能此

SQL Server 2000收缩数据库文件至最小的空间会影响数据库性能此问题在项目得到证实,数据文件从90G收缩至70G后,用户的查询体验速度受到严重影响,特别是数据量较大、查询范围大的数据表。

因此建议在磁盘空间请允许的情况下不要收缩数据库文件,如果磁盘空间有限,需要收缩,则收缩数据库后,一定要对数据库表重建索引。

处理步骤:一、查看数据表索引碎片情况命令:DBCC SHOWCONTIG(TableName)参数说明:扫描页数:如果你知道行的近似尺寸和表或索引里的行数,那么你可以估计出索引里的页数。

看看扫描页数,如果明显比你估计的页数要高,说明存在内部碎片。

扫描扩展盘区数:用扫描页数除以8,四舍五入到下一个最高值。

该值应该和DBCC SHOWCONTIG返回的扫描扩展盘区数一致。

如果DBCC SHOWCONTIG返回的数高,说明存在外部碎片。

碎片的严重程度依赖于刚才显示的值比估计值高多少。

扩展盘区开关数:该数应该等于扫描扩展盘区数减1。

高了则说明有外部碎片。

每个扩展盘区上的平均页数:该数是扫描页数除以扫描扩展盘区数,一般是8。

小于8说明有外部碎片。

扫描密度[最佳值:实际值]:DBCC SHOWCONTIG返回最有用的一个百分比。

这是扩展盘区的最佳值和实际值的比率。

该百分比应该尽可能靠近100%。

低了则说明有外部碎片。

逻辑扫描碎片:无序页的百分比。

该百分比应该在0%到10%之间,高了则说明有外部碎片。

扩展盘区扫描碎片:无序扩展盘区在扫描索引叶级页中所占的百分比。

该百分比应该是0%,高了则说明有外部碎片。

每页上的平均可用字节数:所扫描的页上的平均可用字节数。

越高说明有内部碎片,不过在你用这个数字决定是否有内部碎片之前,应该考虑fill factor(填充因子)。

平均页密度(完整):每页上的平均可用字节数的百分比的相反数。

低的百分比说明有内部碎片。

二、重建索引命令DBCC DBREINDEX用法语法:DBCC DBREINDEX( [ 'database.owner.table_name'[ , index_name[ , fillfactor ]]])参数说明:'database.owner.table_name'是要重建其指定的索引的表名。

sqlserver数据库收缩步骤

sqlserver数据库收缩步骤

sqlserver数据库收缩步骤数据库收缩是指将数据库中的空间回收和重新组织,以便提高性能和节省磁盘空间。

以下是SQL Server数据库收缩的步骤:1.首先,运行`DBCCSHRINKDATABASE`命令来收缩整个数据库。

该命令将尝试压缩数据库文件并释放未使用的空间。

语法如下:```DBCC SHRINKDATABASE (database_name)```其中,`database_name`是要收缩的数据库的名称。

2.默认情况下,`DBCCSHRINKDATABASE`将尝试将数据库缩小到其实际大小。

但是,如果你希望将数据库缩小到指定的大小,可以使用`TARGET_SIZE`选项。

例如,要将数据库缩小到100MB大小,可以执行以下命令:```DBCC SHRINKDATABASE (database_name, 100)```3.收缩数据库过程可能会造成数据库锁定,因此在收缩数据库之前应考虑该数据库的使用情况。

如果数据库正在被频繁使用,可能需要在低峰时间进行收缩操作。

4.收缩数据库期间,可以将进度信息输出到消息窗口。

要启用此选项,可以使用`WITHNO_INFOMSGS`选项。

例如:DBCC SHRINKDATABASE (database_name) WITH NO_INFOMSGS```5.如果只需要收缩特定的表或索引,可以使用`DBCCSHRINKFILE`命令。

该命令用于收缩特定文件(数据文件或日志文件),而不是整个数据库。

语法如下:```DBCC SHRINKFILE (file_name, target_size)```6. `DBCC SHRINKFILE`命令中的`file_name`参数可以指定要收缩的文件的名称。

可以通过查询`sys.database_files`系统视图或使用SQL Server Management Studio(SSMS)查看文件名称。

7.使用`DBCCSHRINKFILE`命令收缩数据库文件时,可以将文件缩小到其实际大小,或者指定目标大小。

SQL2000自动备份压缩删除数据库

SQL2000自动备份压缩删除数据库

SQL2000自动备份压缩删除数据库create proc dbbf_testasdeclare@dbname varchar(20),@cmd1 nvarchar(120),@cmd2 varchar(120),@cmd3 varchar(120),@i int,@filename varchar(80),@path varchar(80)set @dbname='TEST'--\\这是数据库名,使用时只需要把它改成你所要备份的数据库名即可,这个必须修改\\------删除当前日期前15-前10天内的数据库备份,可根需要自行修改----set @i=10while @i<15beginset @cmd1 ='if existE:\DATABACKUP\'+@dbname+convert(varchar(10),DATEADD(day,-@i,getdate()),112) +'*' +' del'+'E:\DATABACKUP\'+@dbname+convert(varchar(10),DATEADD(day,-@i,getdate()),112) +'*'exec master..xp_cmdshell @cmd1----删除10天之前的数据库备份set @i=@i+1end----备份数据库----exec master..xp_cmdshell 'if not exist E:\DATABACKUP (md E:\DATABACKUP)'--如果E 盘根目录没有DATABACKUP文件夹,则新建此文件夹SELECT @filename=@dbname+replace(replace(replace(CONVERT(varchar(16), getdate(), 120 ),'-',''),' ','-'),':','')SET @path='E:\DATABACKUP\'+@filenameBACKUP DATABASE @dbname TO DISK=@path----压缩数据库备份,删除原备份文件set @cmd2='C:\PROGRA~1\WinRAR\winrar.exe a -ibckE:\DATABACKUP\'+@filename+'.rar E:\DATABACKUP\'+@filenameexec master..xp_cmdshell @cmd2----压缩数据库set @cmd3='DEL E:\DATABACKUP\'+@filenameexec master..xp_cmdshell @cmd3----删除原备份文件(只保留压缩包)go--1.修改本过程中目标数据库名成你要备分的数据库名2.复制此行(可含此行)以上内空到查询分析器中执行即可--3.数据库备份文件存放在E:\DATABACKUP文件夹中,文件名为数据库名四位年两位月两位日-两位时两位分.rar。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

--DUMP TRANSACTION jiaowu WITH NO_LOG //清除日志
--BACKUP LOG jiaowu WITH NO_LOG //下一步执行
--DBCC SHRINKDATABASE(jiaowu) //查询大小
这边有些资料,希望能有帮助
--压缩日志及数据库文件大小
/*--特别注意
请按步骤进行,未进行前面的步骤,请不要做后面的步骤
否则可能损坏你的数据库.
一般不建议做第4,6两步
第4步不安全,有可能损坏数据库或丢失数据
第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复.
--*/
--下面的所有库名都指你要处理的数据库的库名
1.清空日志
DUMP TRANSACTION 库名WITH NO_LOG
2.截断事务日志:
BACKUP LOG 库名WITH NO_LOG
3.收缩数据库文件(如果不压缩,数据库的文件不会减小
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件
--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
也可以用SQL语句来完成
--收缩数据库
DBCC SHRINKDATABASE(库名)
--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfiles DBCC SHRINKFILE(1)
4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行)
a.分离数据库:
企业管理器--服务器--数据库--右键--分离数据库
b.在我的电脑中删除LOG文件
c.附加数据库:
企业管理器--服务器--数据库--右键--附加数据库
此法将生成新的LOG,大小只有500多K
或用代码:
下面的示例分离pubs,然后将pubs 中的一个文件附加到当前服务器。

a.分离
EXEC sp_detach_db @dbname = '库名'
b.删除日志文件
c.再附加
EXEC sp_attach_single_file_db @dbname = '库名',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\库名.mdf'
5.为了以后能自动收缩,做如下设置:
企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"
--SQL语句设置方式:
EXEC sp_dboption '库名', 'autoshrink', 'TRUE'
6.如果想以后不让它日志增长得太大
企业管理器--服务器--右键数据库--属性--事务日志
--将文件增长限制为xM(x是你允许的最大数据文件大小)
--SQL语句的设置方式:
alter database 库名modify file(name=逻辑文件名,maxsize=20)。

相关文档
最新文档