none
Arquivo .ndf sem ficando sem tamanho - Urgente !!!!! RRS feed

  • Pergunta

  • Boa tarde !!
    Tenho uma uma base de dados em 2005 com 196 Gb dividida em 3 discos com um banco principal no qual tenho o problema, sendo o unico com um arquivo .ndf num disco exclusivo pra ele ( F: )

    Disco ( F: NDF ) Disco de 146 Gb com 4Gb livres o tamanho do .ndf é de 141 Gb a taxa de aumento é de 1Gb

    Disco ( G: MDF ) Disco de 146 Gb com 62 Gb livres o tamanho do .mdf é de 55 Gb com taxa de 1Gb

    Disco ( I: LDF ) Disco de 146 Gb com 130 Gb livres o tamanho do .Ldf é inicial 7 Gb com taxa de aumento de 1Gb dificilmente ele aumenta de tamanho durante o dia, ele so aumenta de tamnho quando recrio ou organizo os indices.

    Nao tenho auto shrink nesse banco, faço bkp full todos os dias e limpo o log em seguida ( truncate, shrinkdatabase )

    Tenho medo do disco F: NDF ficar sem espaço disponivel, comprei outro HD de 300Gb no qual vou deixar somente o .ndf mas so chega em 10 dias.

    O que pode acontecer ?????
    POde parar tudo se o .ndf nao tiver mais espaço pra crescer ???
    POsso criar outro .ndf no disco I: ???

     

    reserved              data             index_size         unused

    ------------------ ------------------ ------------------ ------------------

    182795584 KB     79821080 KB           102473256 KB    501248 KB

    quinta-feira, 6 de janeiro de 2011 16:53

Respostas

  • Bom dia Ivan!

     

    O que me parece que seu espaço reservado pelo banco está ocupando a maior parte do disco. O Ideal seria vc avaliar o crescimento de suas tabelas no banco de dados. Utilize esse script

    BEGIN try 
    DECLARE @table_name VARCHAR(500) ; 
    DECLARE @schema_name VARCHAR(500) ; 
    DECLARE @tab1 TABLE(
        tablename VARCHAR (500) collate database_default
    ,    schemaname VARCHAR(500) collate database_default
    ); 
    DECLARE @temp_table TABLE (  
        tablename sysname
    ,    row_count INT
    ,    reserved VARCHAR(50) collate database_default
    ,    data VARCHAR(50) collate database_default
    ,    index_size VARCHAR(50) collate database_default
    ,    unused VARCHAR(50) collate database_default 
    ); 
    INSERT INTO @tab1 SELECT t1.name, t2.name FROM sys.tables t1 
    INNER JOIN sys.schemas t2 ON ( t1.schema_id = t2.schema_id );  
    DECLARE c1 CURSOR FOR 
    SELECT t2.name + '.' + t1.name FROM sys.tables t1 
    INNER JOIN sys.schemas t2 ON ( t1.schema_id = t2.schema_id );  
    OPEN c1; 
    FETCH NEXT FROM c1 INTO @table_name;
    WHILE @@FETCH_STATUS = 0 
    BEGIN 
        SET @table_name = REPLACE(@table_name, '[',''); 
        SET @table_name = REPLACE(@table_name, ']',''); 
        -- make sure the object exists before calling sp_spacedused
        IF EXISTS(SELECT OBJECT_ID FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(@table_name))
        BEGIN
            INSERT INTO @temp_table EXEC sp_spaceused @table_name, false ;
        END
        
        FETCH NEXT FROM c1 INTO @table_name; 
    END; 
    CLOSE c1; 
    DEALLOCATE c1; 
    SELECT t1.*, t2.schemaname FROM @temp_table t1 
    INNER JOIN @tab1 t2 ON (t1.tablename = t2.tablename )
    ORDER BY row_count desc --schemaname,tablename;
    END try 
    BEGIN catch 
    SELECT -100 AS l1
    ,    ERROR_NUMBER() AS tablename
    ,    ERROR_SEVERITY() AS row_count
    ,    ERROR_STATE() AS reserved
    ,    ERROR_MESSAGE() AS data
    ,    1 AS index_size, 1 AS unused, 1 AS schemaname 
    END catch
    
    para ver qual tabela está maior, em seguida sugiro vc analisar essa e/ou essas tabelas. Importante também vc disse que está rodando as rotinas de manutenção de rebuild e reorganize, verifique se no se reorganize está configurado para liberar espaço em disco para o SO, e depois vc deve rodar um shrinkdatabase.

     

    Espero ter lhe ajudado um pouco...


    []'s Douglas R. Oliveira
    • Marcado como Resposta Richard Juhasz quinta-feira, 27 de setembro de 2012 17:21
    sexta-feira, 7 de janeiro de 2011 11:14