每个数据库的操作

时间:2014-04-01 05:32:16

标签: sql tsql

我需要更改所有SQL Server数据库上的数据和日志文件的自动增长。 你能告诉我脚本的例子吗?

1 个答案:

答案 0 :(得分:0)

1. Change the file growth setting of database - 

    ALTER DATABASE MyDB
      MODIFY FILE
      (NAME=MyDB_Log,FILEGROWTH=20MB);

2. Display Auto-growth Events Contained in the Default Trace files -

    DECLARE @filename NVARCHAR(1000);
    DECLARE @bc INT;
    DECLARE @ec INT;
    DECLARE @bfn VARCHAR(1000);
    DECLARE @efn VARCHAR(10);

    -- Get the name of the current default trace
    SELECT @filename = CAST(value AS NVARCHAR(1000))
    FROM ::fn_trace_getinfo(DEFAULT)
    WHERE traceid = 1 AND property = 2;

    -- rip apart file name into pieces
    SET @filename = REVERSE(@filename);
    SET @bc = CHARINDEX('.',@filename);
    SET @ec = CHARINDEX('_',@filename)+1;
    SET @efn = REVERSE(SUBSTRING(@filename,1,@bc));
    SET @bfn = REVERSE(SUBSTRING(@filename,@ec,LEN(@filename)));

    -- set filename without rollover number
    SET @filename = @bfn + @efn

    -- process all trace files
    SELECT 
      ftg.StartTime
    ,te.name AS EventName
    ,DB_NAME(ftg.databaseid) AS DatabaseName  
    ,ftg.Filename
    ,(ftg.IntegerData*8)/1024.0 AS GrowthMB 
    ,(ftg.duration/1000)AS DurMS
    FROM ::fn_trace_gettable(@filename, DEFAULT) AS ftg 
    INNER JOIN sys.trace_events AS te ON ftg.EventClass = te.trace_event_id  
    WHERE (ftg.EventClass = 92  -- Date File Auto-grow
        OR ftg.EventClass = 93) -- Log File Auto-grow
    ORDER BY ftg.StartTime