sqlserver2000数据库文件mdf已经达到70g了,怎么压缩啊 sqlserver2000数据库文件mdf已经达到70g了,怎么压缩啊,应该没有这么多数据的,已经delete一年前的所有数据了!!压缩一定不能影响到数据,望高手指点!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 dbcc shrinkdatabase(dbname, 0) 清除日志: DECLARE @LogicalFileName sysname, @MaxMinutes INT, @NewSize INTUSE szwzcheck -- 要操作的数据库名SELECT @LogicalFileName = 'szwzcheck_Log', -- 日志文件名@MaxMinutes = 10, -- Limit on time allowed to wrap log. @NewSize = 20 -- 你想设定的日志文件的大小(M)-- Setup / initializeDECLARE @OriginalSize intSELECT @OriginalSize = size FROM sysfiles WHERE name = @LogicalFileNameSELECT 'Original Size of ' + db_name() + ' LOG is ' + CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' + CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB' FROM sysfiles WHERE name = @LogicalFileNameCREATE TABLE DummyTrans (DummyColumn char (8000) not null)DECLARE @Counter INT, @StartTime DATETIME, @TruncLog VARCHAR(255)SELECT @StartTime = GETDATE(), @TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'DBCC SHRINKFILE (@LogicalFileName, @NewSize)EXEC (@TruncLog)-- Wrap the log if necessary.WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName) AND (@OriginalSize * 8 /1024) > @NewSize BEGIN -- Outer loop. SELECT @Counter = 0 WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000)) BEGIN -- update INSERT DummyTrans VALUES ('Fill Log') DELETE DummyTrans SELECT @Counter = @Counter + 1 END EXEC (@TruncLog) END SELECT 'Final Size of ' + db_name() + ' LOG is ' + CONVERT(VARCHAR(30),size) + ' 8K pages or ' + CONVERT(VARCHAR(30),(size*8/1024)) + 'MB' FROM sysfiles WHERE name = @LogicalFileNameDROP TABLE DummyTransSET NOCOUNT OFF 把szwzcheck换成你数据库的名字即可,在查询分析器里面运行。 有全角的空格(为了显示好看),你自己把他换一下. 收缩日志:企业管理器--所有任务--收缩数据库--文件--选日志文件收缩. 日志文件很小的,才几十兆,就是mdf文件太大了!! 70G的mdf,要有心理准备:SQL2000我尝试过将17G的数据库收缩到5G,收缩了5个小时(不是普通PC,是服务器,具体配置忘了)没搞完,最后忍受不了停了,另建一个数据库将数据库导入,删除旧数据库。我的经验是,占空比越大,收缩越慢,所以从此后我都建个作业,每周空闲时收缩。 数据库收缩 SQL Server 日志文件 .mdf文件 1 首先纠正,不是压缩是收缩,命令1楼已经给了收缩的必要条件1 你删除数据库中的数据库,已经将你的空间还给了SQL SERVER,但不是系统,所以你MDF文件还是很大2 对于你MDF70G 我真的只能说,你没有维护你的数据库,你要知道你可以建立多个NDF来控制你的MDF 显然你么有做,NDF的做法在某种程度分散了你的数据库并且能起到一定的优化作用。3 收缩数据库自然,对数据库的读写以及索引碎片有不良的反应,尤其是70G的数据库,建议你慎用, 另外做之前要备份数据库, 原因有两点 这里就不说了 截断日志: backup log 数据库 with no_log 再: 企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了 dbcc shrinkfile('日志文件名',新的大小数值类型值如1)日志文件名 select name from sysfiles 求最快代码 求SQL语句 误删了表的内容,请问怎么恢复 高手赐教!!! jsp ASP网页数据提交到两个MSSQL数据库 为何不能用sa登录? 在sql server中可以把某个字段加密么? 急#!!! 一个表中有好多数据,我想从中选出一个内部为空的记录集 请教高手sql server 的查询难题一道。 如何将bigint数据类型的字段转成bigint类型的变量? 求一SQL
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE szwzcheck -- 要操作的数据库名
SELECT @LogicalFileName = 'szwzcheck_Log', -- 日志文件名
@MaxMinutes = 10, -- Limit on time allowed to wrap log.
@NewSize = 20 -- 你想设定的日志文件的大小(M)
-- Setup / initialize
DECLARE @OriginalSize int
SELECT @OriginalSize = size
FROM sysfiles
WHERE name = @LogicalFileName
SELECT 'Original Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @LogicalFileName
CREATE TABLE DummyTrans
(DummyColumn char (8000) not null)
DECLARE @Counter INT,
@StartTime DATETIME,
@TruncLog VARCHAR(255)
SELECT @StartTime = GETDATE(),
@TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'
DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
-- Wrap the log if necessary.
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time
AND @OriginalSize = (SELECT size FROM sysfiles WHERE name =
@LogicalFileName)
AND (@OriginalSize * 8 /1024) > @NewSize
BEGIN -- Outer loop.
SELECT @Counter = 0
WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
BEGIN -- update
INSERT DummyTrans VALUES ('Fill Log')
DELETE DummyTrans
SELECT @Counter = @Counter + 1
END
EXEC (@TruncLog)
END
SELECT 'Final Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),size) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @LogicalFileName
DROP TABLE DummyTrans
SET NOCOUNT OFF
把szwzcheck换成你数据库的名字即可,在查询分析器里面运行。
有全角的空格(为了显示好看),你自己把他换一下.
收缩日志:企业管理器--所有任务--收缩数据库--文件--选日志文件收缩.
1 首先纠正,不是压缩是收缩,命令1楼已经给了收缩的必要条件1 你删除数据库中的数据库,已经将你的空间还给了SQL SERVER,但不是系统,所以你MDF文件还是很大2 对于你MDF70G 我真的只能说,你没有维护你的数据库,你要知道你可以建立多个NDF来控制你的MDF 显然你么有做,NDF的做法在某种程度分散了你的数据库并且能起到一定的优化作用。3 收缩数据库自然,对数据库的读写以及索引碎片有不良的反应,尤其是70G的数据库,建议你慎用, 另外做之前要备份数据库, 原因有两点 这里就不说了
截断日志:
backup log 数据库 with no_log 再:
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了 dbcc shrinkfile('日志文件名',新的大小数值类型值如1)
日志文件名 select name from sysfiles