估计你用的是SQL Server6.5.
建议你采用备份数据库=〉新建设备=〉新建库=〉恢复数据库的方式
缩小你的数据库。

解决方案 »

  1.   

    我用的是SQL Server 7.0
    我刚刚用了管理器里面的shunk database,它显示我的库可用空间是2560M,实际用的是235M,可是点确定之后,并没有缩小库文件的大小。
    该怎么办?是不是非要删库呢?
      

  2.   

    还有一点,我的库是4个.data的文件,能不能用语句的方法来释放可用空间?我真的不想删了它   :(
      

  3.   

    可是我用shunk之后显示缩减成功,数据库缩到2560M。这个结果等于没缩嘛。是不是因为我的库文件是.dat的文件,而不是.mdf的文件?
      

  4.   

    在企业管理器,选中你的数据库,右键,所有任务里有个shrink database.
      

  5.   

    使用shunk 语句还是相当好用的:
    USE DBNAME
    GO
    DBCC SHRINKFILE (filename,10)
    GO
    我已经成功缩减了各个数据文件的大小,但是这个语句似乎对日志文件没用作用。
      

  6.   


    select name,filename from sysfiles找到物理文件在数据库中的name然后根据这个name执行DBCC SHRINKFILE (name, 20)  -- 压缩成20MB对日志文件也是有效的.
      

  7.   

    name没写错阿,可是日志文件还是不能缩小阿。
      

  8.   

    先執行
    backup log yourDBName with no_log;再執行dbcc SHRINKFILE (name, 指定大小)
      

  9.   

    MRDARCY(大傻):
    竹版主说的是对的.你说错了.不信可以自己试一下.而且压缩后的大小不能小于目前数据的大小.
      

  10.   

    试试下面的存储过程。
    我可是成功地解决了问题呀。祝好运。
    CREATE PROCEDURE  sp_ShrinkLogFileSize AS begin
    -----
    SET NOCOUNT ON
    DECLARE @LogicalFileName sysname,
    @MaxMinutes INT,
    @NewSize INT
    --USE smsc_sm_db -- 要操作的数据库名
    SELECT @LogicalFileName = 'smsc_sm_db_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 has not expired
    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 end
    GO
      

  11.   

    我使用SQL 2000以后,只能把*.mdf文件成功瘦身,但是日志文件瘦身失败!使用的是shrink database
      

  12.   

    干脆将日志文件杀掉.用如下方法:1. 注销DB
    exec sp_detach_db yourDBName,true;2. 将.LDF文件从data目录中删掉或者移走.3.以单文件形式挂上DB,SQL Server会自动给你一个504KB的日志文件
    exec sp_attach_single_file_db 
    yourDBName,
    ’d:\mssql7\data\yourDBName_data.MDF’
    做这些操作前最好先备份以防不测.
      

  13.   

    The target size for data and log files as calculated by DBCC SHRINKDATABASE can never be smaller than the minimum size of a file. The minimum size of a file is the size specified when the file was originally created, or the last explicit size set with a file size changing operation such as ALTER DATABASE with the MODIFY FILE option or DBCC SHRINKFILE. For example, if all the data and log files of mydb were specified to be 10 MB at the time CREATE DATABASE was executed, the minimum size of each file is 10 MB. DBCC SHRINKDATABASE cannot shrink any of the files smaller than 10 MB. If one of the files is explicitly grown to a size of 20 MB by using ALTER DATABASE with the MODIFY FILE option, the new minimum size of the file is 20 MB. To shrink a file to a size smaller than its minimum size, use DBCC SHRINKFILE and specify the new size. Executing DBCC SHRINKFILE changes the minimum file size to the new size specified.Use DBCC SHRINKFILE to reduce the size of a file to smaller than its originally created size. The minimum file size for the file is then reset to the newly specified size.
    IronPromises(铁诺) ,这是我在msdn上找到的资料。SHRINKDATABASE不能把数据库缩小到比初始时还小,SHRINKFILE却可以。
    认错,认错。
    CRYSTAL:就用 DBCC SHRINKFILE("数据库名称",大小),大小不小于当前数据大小。
      

  14.   

    怎么又写错了,应该是
    DBCC SHRINKFILE("数据库文件名(带路径)",大小)
      

  15.   

    很简单,将日志设置成auto shrink,truncate log on checkpoint,在数据库属性中.
    使用dbcc设置checkpoint即可.
      

  16.   

    用truncate log 来删除没有用的LOG信息!