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

  • 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'.
    ...

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

    Felipe, o caminho que informou geralmente é utilizado para abrir arquivos de texto que contêm código SQL. Para abrir um banco de dados, sugiro que utilize a opção ANEXAR (attach) para que o banco de dados faça parte da instância.

    Northwind Install step 1

    Fonte: https://businessimpactinc.com/blog/install-northwind-database/

    No Object Explorer clique com o botão direito do mouse sobre "Databases" (ou "Bancos de dados") que então aparece menu com algumas opções. Após, clique em "Attach" (ou "Anexar") e siga as instruções. É um processo simples e rápido e sem necessidade de escrever comandos T-SQL. Pode-se fazer tudo pela interface gráfica do Management Studio.

    Se o banco de dados em questão foi gerado em versão anterior do SQL Server, automaticamente a estrutura interna dele é atualizada para a da versão 2017 do SQL Server.

    ---

    Também é possível de anexar o banco de dados utilizando Transact SQL, conforme descrito em Anexar um banco de dados usando T-SQL. Nesse caso sugiro que mova previamente os arquivos MDF e LDF para a pasta C:\Arquivos de Programas\Microsoft SQL Server\MSSQL14.nomeinstancia\MSSQL\Data\

     

    -- código #1
    CREATE DATABASE nomebanco   
        on (FILENAME = 'C:\Arquivos de Programas\Microsoft SQL Server\MSSQL14.nomeinstancia\MSSQL\Data\nomebanco_Data.mdf'),   
           (FILENAME = 'C:\Arquivos de Programas\Microsoft SQL Server\MSSQL14.nomeinstancia\MSSQL\Data\nomebanco_Log.ldf')   
        for ATTACH;  
    Se a instância foi criada com o nome padrão, então nomeinstancia é MSSQLSERVER.

    ---

    No youtube há vários vídeos que explicam o passo a passo. Por exemplo: Detach and Attach a Database in SQL Server.

     

     

    Lembre-se de marcar esta resposta se ela te ajudou a resolver o problema.


    José Diz     Belo Horizonte, MG - Brasil     [T-SQL performance tuning: Porto SQL]   [e-mail]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    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