none
Monitorar crescimento das bases de dados RRS feed

Respostas

  • Veja se é isso que vc quer:

    https://www.manageengine.com/sql-performance-monitor/sql-server-monitoring-index.html


    e dependendo da sua necessidade (e orçamento) existe essa ferramente aqui:

    http://software.dell.com/products/spotlight-on-sql-server-enterprise/

    Ela realmente mostra um historico de crescimento de cada tabela (dia à dia) e com isso vc pode ver a evoluçao, mas ela nao é barata. Tenho um cliente que usa a mesma ferramenta na versao Oracle, mas neste caso é para monitorar 10 sevidores com cada um usando mais de 5 servidores oracle e cada um com centenas de bases. A sala do DBA tem um monitor de 50 polegadas somente mostrar a interface deste software.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    quinta-feira, 28 de maio de 2015 14:29
  • VCCGodoi,

    As sugestões dos colegas são ótimas, inclusive o Nagios eu utilizo a um bom tempo, o único problema que eu vejo é a sua instalação e configuração que é bastante chata, mas uma ótima ferramenta.

    Agora dentro do Management Studio existem alguns relatórios que podem também auxiliar na sua análise, dentre eles os relatórios de uso por table ou índices.

    Eu também utilizo um script que me relata semanalmente o crescimento dos bancos:

    Use TempDB
    
    If Object_Id('TEMPDB..#RelacaoBancos') IS NOT NULL
     Begin
      Truncate Table #RelacaoBancos
     End
     Else
     Begin
      Create Table #RelacaoBancos
      (Codigo TinyInt Identity(1,1),
       DatabaseName Varchar(100),
       Space_DataFile Int,
       Space_LogFile Int)
     End
     
    DECLARE @DatabaseName varchar(30), @cmd varchar(1000), @Indice Int
     
    DECLARE cur_SpaceUsed CURSOR FOR
     
    SELECT name FROM MASTER..SYSDATABASES
    WHERE  name NOT IN ('master', 'msdb', 'model', 'tempdb')
    and    status <> 66048
    Order By Name
     
    OPEN cur_SpaceUsed
    FETCH NEXT FROM cur_SpaceUsed
    INTO @DatabaseName
     
    WHILE @@FETCH_STATUS = 0
    BEGIN
       SELECT @cmd =  'SET NOCOUNT ON' + char(10) +
              'USE ' + @DatabaseName + '' + char(10) + 
    
              '
               DECLARE  @SizeDataFile Int, 
                                @SizeLogFile Int
               
               
               Set @SizeDataFile=(Select Sum(((size*8)/1024)) from SysFiles Where GroupId >= 1)
               Set @SizeLogFile=(Select Sum(((size*8)/1024)) from SysFiles Where GroupID = 0)        
             
               Insert Into TempDB..#RelacaoBancos(DatabaseName, Space_DataFile, Space_LogFile) 
                                  Values('+''''+@DatabaseName+''''+','+'@SizeDataFile'+','+'@SizeLogFile'+')'
    
     Exec(@cmd)
     
     FETCH NEXT FROM cur_SpaceUsed
     INTO @DatabaseName
    END
     
    CLOSE cur_SpaceUsed
    DEALLOCATE cur_SpaceUsed
    
    
    Select Upper(DatabaseName) 'Database',
           Space_DataFile As 'Size Data File in MBs',
           Space_LogFile As 'Size Log File in MBs'
    from #RelacaoBancos


    Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Marcado como Resposta vggodoi segunda-feira, 29 de junho de 2015 20:41
    sexta-feira, 29 de maio de 2015 23:10
    Moderador

Todas as Respostas

  • Eu uso o proprio SSMS. eu simplesmente executo essa query:

    SELECT 
        t.NAME AS TableName,
        s.Name AS SchemaName,
        p.rows AS RowCounts,
        SUM(a.total_pages) * 8 AS TotalSpaceKB, 
        SUM(a.used_pages) * 8 AS UsedSpaceKB, 
        (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB
    FROM 
        sys.tables t
    INNER JOIN      
        sys.indexes i ON t.OBJECT_ID = i.object_id
    INNER JOIN 
        sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
    INNER JOIN 
        sys.allocation_units a ON p.partition_id = a.container_id
    LEFT OUTER JOIN 
        sys.schemas s ON t.schema_id = s.schema_id
    WHERE 
        t.NAME NOT LIKE 'dt%' 
        AND t.is_ms_shipped = 0
        AND i.OBJECT_ID > 255 
    GROUP BY 
        t.Name, s.Name, p.Rows
    ORDER BY 
        t.Name

    O que vc precisa a mais do que isso?

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    quinta-feira, 28 de maio de 2015 13:53
  • Então quero algo que me alert ou que eu acesse, pois nem sempre quero ficar entrando e digitando querys, estou tentando algo com alert me avisar...
    quinta-feira, 28 de maio de 2015 14:26
  • Veja se é isso que vc quer:

    https://www.manageengine.com/sql-performance-monitor/sql-server-monitoring-index.html


    e dependendo da sua necessidade (e orçamento) existe essa ferramente aqui:

    http://software.dell.com/products/spotlight-on-sql-server-enterprise/

    Ela realmente mostra um historico de crescimento de cada tabela (dia à dia) e com isso vc pode ver a evoluçao, mas ela nao é barata. Tenho um cliente que usa a mesma ferramenta na versao Oracle, mas neste caso é para monitorar 10 sevidores com cada um usando mais de 5 servidores oracle e cada um com centenas de bases. A sala do DBA tem um monitor de 50 polegadas somente mostrar a interface deste software.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    quinta-feira, 28 de maio de 2015 14:29
  • Então quero algo que me alert ou que eu acesse, pois nem sempre quero ficar entrando e digitando querys, estou tentando algo com alert me avisar...

    VGGodoi,

    Além das ferramentas indicadas pelo William, também indico o Nagios.

    É uma ferramenta gratuíta que você poderá configurar diversos alertas para controlar o desempenho e a performance do SQL Server, através de uma interface gráfica (Web).e também com envio de e-mail´s.

    É importante apenas equilibrar corretamente os parâmetros para você não ficar recebendo muitos e-mail's desnecessários e, neste caso, em vez de ajudar seu monitoramento você poderá criar um "spam particular".

    Segue um link com maiores informações:

    https://www.nagios.com/solutions/mssql-monitoring

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    sexta-feira, 29 de maio de 2015 19:42
  • VCCGodoi,

    As sugestões dos colegas são ótimas, inclusive o Nagios eu utilizo a um bom tempo, o único problema que eu vejo é a sua instalação e configuração que é bastante chata, mas uma ótima ferramenta.

    Agora dentro do Management Studio existem alguns relatórios que podem também auxiliar na sua análise, dentre eles os relatórios de uso por table ou índices.

    Eu também utilizo um script que me relata semanalmente o crescimento dos bancos:

    Use TempDB
    
    If Object_Id('TEMPDB..#RelacaoBancos') IS NOT NULL
     Begin
      Truncate Table #RelacaoBancos
     End
     Else
     Begin
      Create Table #RelacaoBancos
      (Codigo TinyInt Identity(1,1),
       DatabaseName Varchar(100),
       Space_DataFile Int,
       Space_LogFile Int)
     End
     
    DECLARE @DatabaseName varchar(30), @cmd varchar(1000), @Indice Int
     
    DECLARE cur_SpaceUsed CURSOR FOR
     
    SELECT name FROM MASTER..SYSDATABASES
    WHERE  name NOT IN ('master', 'msdb', 'model', 'tempdb')
    and    status <> 66048
    Order By Name
     
    OPEN cur_SpaceUsed
    FETCH NEXT FROM cur_SpaceUsed
    INTO @DatabaseName
     
    WHILE @@FETCH_STATUS = 0
    BEGIN
       SELECT @cmd =  'SET NOCOUNT ON' + char(10) +
              'USE ' + @DatabaseName + '' + char(10) + 
    
              '
               DECLARE  @SizeDataFile Int, 
                                @SizeLogFile Int
               
               
               Set @SizeDataFile=(Select Sum(((size*8)/1024)) from SysFiles Where GroupId >= 1)
               Set @SizeLogFile=(Select Sum(((size*8)/1024)) from SysFiles Where GroupID = 0)        
             
               Insert Into TempDB..#RelacaoBancos(DatabaseName, Space_DataFile, Space_LogFile) 
                                  Values('+''''+@DatabaseName+''''+','+'@SizeDataFile'+','+'@SizeLogFile'+')'
    
     Exec(@cmd)
     
     FETCH NEXT FROM cur_SpaceUsed
     INTO @DatabaseName
    END
     
    CLOSE cur_SpaceUsed
    DEALLOCATE cur_SpaceUsed
    
    
    Select Upper(DatabaseName) 'Database',
           Space_DataFile As 'Size Data File in MBs',
           Space_LogFile As 'Size Log File in MBs'
    from #RelacaoBancos


    Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Marcado como Resposta vggodoi segunda-feira, 29 de junho de 2015 20:41
    sexta-feira, 29 de maio de 2015 23:10
    Moderador