none
Arquivo .mdf grande demais para ser aberto RRS feed

  • Dotaz

  • Olá, bom dia!

    Alguém poderia me ajudar?

    Preciso abrir um banco SQL contendo um arquivo .mdf de 42 GB e outro arquivo .ldf (log) de 2 GB. Entretanto o SQL Studio o  acusa 'O arquivo é grande demais para ser aberto'.

    Creio que minha versão do SQL não tenha limite de arquivo (como os 10 GB da versão Express), no entanto estou sem solução para este problema há mais de 1 semana.

    O caminho que estou fazendo para tentar importar o arquivo no Studio: Arquivo / Abrir / Arquivo (ctrl+O) / 'selecionar o .mdf' / -> Erro


    versão SQL Server infraestrutura local: 2017 trial (versão gratuita por 180 dias, disponível no site oficial da microsoft /pt-br/sql-server/sql-server-downloads# com nome de 'SQL Server 2017 na infraestrutura local')

    versão SQL Server Management Studio (SSMS): 18.2


    středa 28. srpna 2019 14:10

Odpovědi

  • Resolvido!!!

    Resolução:

    Fiz o primeiro passo conforme você explicou, o de anexar os arquivos, e apresentou outro erro. 

    Antes de tentar fazer pelo Transact SQL me lembrei que tinha também os mesmos arquivos .mdf e .ldf juntos em formato Backup, e tentei a opção "Restore Database". Essa opção deu certo!

    Agradeço imensamente a atenção e prestatividade. Só consegui com a sua dica. Muito obrigado!!!

    středa 28. srpna 2019 21:31

Všechny reakce

  • Deleted
    středa 28. srpna 2019 14:14
  • Felipe,

    Por padrão, arquivos de dados .mdf (Master Data File) e arquivos de .ldf (Log Data File), ambos conjuntos básicos de arquivos que formam uma estrutura de banco de dados relacional no SQL Server, não são abertos diretamente no Microsoft SQL Server Management Studio ou Azure Data Studio.

    Tratan-se de arquivos com acesso único e específico pelo Database Engine (Mecanismo de Banco de Dados Relacional) existente no SQL Server que faz acesso ao File System (Sistema de Arquivos) via Storage Engine (Mecanismo de Armazenamento e Acesso da Dados) existente no SQL Server.

    Neste caso, se você tentar abrir estes tipos de arquivos em algum editor de texto ou ferramenta para acesso a dados poderá além de não conseguir acessar o conteúdo do respectivo arquivo, provocar ou proporcionar sem querer alguma falha ou possível quebra na estrutura que forma o conteúdo do mesmo, então neste caso não insista na tentativa de abertura.

    Parece-me que você esta fazendo ou atentando acessar estes arquivos obtido através de um backup? É isso? Ou seja, um único arquivo que contem os dois?

    Ou você realmente você tem os dois arquivos? Se for este o seu cenário, dois arquivos em separado, a sugestão do José Diz é a solução do seu problema, através do comando Create Database você poderá fazer uso da opção Attach, veja o exemplo abaixo:

    -- Exemplo 1 --
    CREATE DATABASE Archive ON (FILENAME = 'D:\SalesData\archdat1.mdf') FOR ATTACH Go

    -- Exemplo 2 --

    CREATE DATABASE AdventureWorks2012 ON
        (FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2012_data.mdf'),
        (FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2012_log.ldf'),
        (FILENAME = 'c:\myFTCatalogs\AdvWksFtCat')
    FOR ATTACH;
    GO

    Este é um exemplo extraído da documentação oficial Microsoft, como você já possui o arquivo de log, não será necessário utilizar a opção ATTACH_REBUILD_LOG.

    Para saber mais sobre o comando Create Datase e seus opções, acesse: https://docs.microsoft.com/en-us/sql/t-sql/statements/create-database-transact-sql?view=sql-server-2017

    Uma outra possibilidade nesta mesma linha de raciocínio seria utilizando a System Stored Procedure: SP_Attach_db, veja o exemplo:

    EXEC sp_attach_db @dbname = N'AdventureWorks2012',   
        @filename1 =   
    N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2012_Data.mdf',   
        @filename2 =   
    N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2012_log.ldf';
    Este também é um exemplo extraído da documentação oficial, para saber mais sobre esta system stored procedure acesse: https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-attach-db-transact-sql?view=sql-server-2017

    Agora caso sua necessidade não seja essa, partiremos então para o uso do comando Restore Database.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]


    středa 28. srpna 2019 14:28
    Moderátor
  • Resolvido!!!

    Resolução:

    Fiz o primeiro passo conforme você explicou, o de anexar os arquivos, e apresentou outro erro. 

    Antes de tentar fazer pelo Transact SQL me lembrei que tinha também os mesmos arquivos .mdf e .ldf juntos em formato Backup, e tentei a opção "Restore Database". Essa opção deu certo!

    Agradeço imensamente a atenção e prestatividade. Só consegui com a sua dica. Muito obrigado!!!

    středa 28. srpna 2019 21:31
  • Junior Galvao,

    Agradeço imensamente a resposta. Por sorte consegui resolver partindo da dica do José Diz :)

    středa 28. srpna 2019 21:32
  • Junior Galvao,

    Agradeço imensamente a resposta. Por sorte consegui resolver partindo da dica do José Diz :)

    Felipe,

    Ok, perfeito, sem crise, estamos aqui para ajudar.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    středa 28. srpna 2019 23:26
    Moderátor