///////////////////压缩日志及数据库文件大小/////////////////////////////*--特别注意
请按步骤进行,未进行前面的步骤,请不要做后面的步骤
否则可能损坏你的数据库.
--*/1.清空日志
DUMP  TRANSACTION  库名  WITH  NO_LOG    2.截断事务日志:
BACKUP LOG 数据库名 WITH NO_LOG3.收缩数据库文件(如果不压缩,数据库的文件不会减小
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件
--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了

解决方案 »

  1.   

    开始->程序->Microsoft SQL Server->企业管理器->
    控制台根目录->Microsoft SQL Servers->SQL Server->(local)[或机器名]
    然后点击菜单'工具'->'数据库维护计划器'->一步一步的设置下去就可以了...
      

  2.   

    --日志太大的问题
    ----------------------------------------------------------------
    --1.
    --作者:不详
    --缩小数据库日志文件
    --e.g:数据库名为abc
    SET NOCOUNT ON
    DECLARE @LOGICALFILENAME SYSNAME,
            @MAXMINUTES INT,
            @NEWSIZE INT
    USE abc---要操作的数据库
    SELECT @LOGICALFILENAME = 'abc_LOG',---日志文件名
           @MAXMINUTES = 10,---LIMIT ON TIME ALLOWED TO WRAP LOG.
           @NEWSIZE = 1---你想设定的日志文件大小(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 @COUNT 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 NOE EXPIRED
      AND @ORIGINALSIZE =(SELECT SIZE FROM SYSFILES WHERE NAME = @LOGICALFILENAME)
      AND (@ORIGINALSIZE*8/1024)>@NEWSIZE
    BEGIN --OUTER LOOP.
        SELECT @COUNT = 0
            WHILE((@COUNT<@ORIGINALSIZE/16) AND (@COUNT<50000))
            BEGIN -- UPDATE
                INSERT DUMMYTRANS VALUES ('FILL LOG')
                DELETE DUMMYTRANS
                SELECT @COUNT = @COUNT + 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----------------------------------------------------------------
    --2.
    backup log 数据库名 with no_log
    dbcc shrinkdatabase(数据库名,1)