ALTER DATABASE ConstructionDB2
MODIFY LOG FILE (MAXSIZE = 20)
HOW TO MODIFY LOG FILE ?   WHY DON'T MODIFY IT ? 

解决方案 »

  1.   

    ALTER DATABASE
    在数据库中添加或删除文件和文件组。也可用于更改文件和文件组的属性,例如更改文件的名称和大小。ALTER DATABASE 提供了更改数据库名称、文件组名称以及数据文件和日志文件的逻辑名称的能力。ALTER DATABASE 支持数据库选项的设置。在早期版本的 Microsoft® SQL Server™ 中,这些选项可以通过 sp_dboption 存储过程来设置。在此次发布的版本中,SQL Server 继续支持 sp_dboption存储过程,但在未来版本中可能不再支持。可使用 DATABASEPROPERTYEX 函数检索数据库选项的当前设置。语法
    ALTER DATABASE database 
    { ADD FILE < filespec > [ ,...n ] [ TO FILEGROUP filegroup_name ] 
    | ADD LOG FILE < filespec > [ ,...n ] 
    | REMOVE FILE logical_file_name 
    | ADD FILEGROUP filegroup_name 
    | REMOVE FILEGROUP filegroup_name 
    | MODIFY FILE < filespec > 
    | MODIFY NAME = new_dbname 
    | MODIFY FILEGROUP filegroup_name {filegroup_property | NAME = new_filegroup_name }
    | SET < optionspec > [ ,...n ] [ WITH < termination > ] 
    | COLLATE < collation_name > 
    }< filespec > ::=( NAME = logical_file_name
        [ , NEWNAME = new_logical_name ]
        [ , FILENAME = 'os_file_name' ]
        [ , SIZE = size ]
        [ , MAXSIZE = { max_size | UNLIMITED } ]
        [ , FILEGROWTH = growth_increment ] ) F1联机
      

  2.   

    WHAT ARE YOU DOING ?
      

  3.   


    --参考:
    SET NOCOUNT ON
    DECLARE @LogicalFileName sysname,
     @MaxMinutes INT,
     @NewSize INTUSE tablename -- 要操作的数据库名
    SELECT  @LogicalFileName = 'tablename_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 @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 
      

  4.   

    you can use sql profile to trace what the ssms do
    ALTER DATABASE [数据库名] MODIFY FILE ( NAME = N'日志名', SIZE = 102400KB )