none
Quando executo o aplicativo recebo a mensagem de erro dizendo que o banco de dados é apenas leitura RRS feed

  • Pergunta

  • Boa noite,

    Criei um aplicativo windows forms. O aplicativo utiliza um banco de dados SQL Server. Criei um pacote de instalação (pela extensão Installer do Visual Studio), e no projeto do pacote de instalação, adicionei o banco de dados que o programa necessita para ser executado. Após a instalação do programa, o banco de dados estará na pasta do programa, dentro da pasta arquivos de programas. Depois que instalo o programa, quando executo o programa, ele consegue ler as tabelas do banco de dados, porém quando vou inserir valores, recebo a mensagem de que o banco de dados é somente leitura. 

    O meu projeto possui um banco de dados somente leitura (não consigo alterar esta opção), marcado com a opção "sempre copiar" para a pasta de saída. Dessa forma, sempre que executo o código, aparece um banco de dados na pasta bin/debug com a opção somente leitura marcada como "false" (que é o banco de dados que armazena as informações que insiro nas tabelas quando o programa está rodando). Quando desmarco a opção "copiar sempre" não consigo executar o código no modo debug para testar o programa (dá erro).

    Já tentei colocar no instalador, tanto o banco de dados que é somente leitura, quanto o banco de dados que permite alterações. Depois que instalo o programa sempre diz que o banco de dados é apenas leitura. O programa funciona, consigo visualizar duas tabelas do banco de dados, porém, não consigo inserir valores. Tentei colocar algumas querys para alterar o banco de dados e habilitar a opção de realizar alterações nele, mas quando executo o código no Visual Studio no modo debug recebo o aviso de que eu não tenho permissão para alterar o banco de dados (se eu compilar e instalar o programa, acredito que receberei a mesma mensagem de erro). Tentei não colocar banco de dados no pacote da instalação, e coloquei um comando para criar um banco de dados quando abro a aplicação, mas da erro: na primeira vez que executei o programa recebi a mensagem que a conexão com o banco de dados foi realizada, porém não houve resposta do outro lado; e na segunda vez que tentei abrir o programa recebi uma outra mensagem de erro.

    Eu li que o SQL Server é um programa pago. Mas também li em algum lugar que é possível armazenar até 10 Gb de dados com a versão gratuita. Eu baixei uma versão gratuita aqui. O fato da minha versão ser gratuita pode ser o motivo do meu problema? Ou sou eu que estou errando em algo na hora de copiar o banco de dados para a pasta do arquivo de instalação?

    Estou usando o SQL Server 2017, e o Visual Studio 2017.


    quinta-feira, 1 de março de 2018 00:39

Respostas

  • Leonardo,

    Tente através do Management Studio acessara este banco de dados e verificar nas propriedades dele se o mesmo não esta marcado como ReadOnly.


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

    quarta-feira, 7 de março de 2018 19:33
    Moderador
  • Para verificar se seu banco de dados está  como read_only execute o comando abaixo, se a coluna is_read_only estiver com o valor 1, ele está, então com o segundo comando é possível alterar para escrita.
    Quanto ao SQL Server ser gratuito, tem a versão express que é sim gratuita.

    SELECT is_read_only, *
    FROM SYS.DATABASES
    WHERE name = 'SEU_BANCO_DE_DADOS';
    
    ALTER DATABASE [SEU_BANCO_DE_DADOS] 
    SET READ_WRITE WITH NO_WAIT;


    Willy Campos

    quinta-feira, 8 de março de 2018 19:24
  • Laonardo, 

    É bom verificar o tamanho da Base de dados, caso seu banco tenha chegado aos 10Gb pode apresentar erros desse gênero.

    Aqui onde administro tinha uma base que chegou aos 10Gb, a aplicação estava funcionando, porem algumas funcionalidade apresentavam erros, apos abertura de chamado com o desenvolvedor ele me informou que a base havia atingido seu limite então movi a base para outro server com o SQL Standard.

    quinta-feira, 8 de março de 2018 19:43

Todas as Respostas

  • Leonardo,

    Tente através do Management Studio acessara este banco de dados e verificar nas propriedades dele se o mesmo não esta marcado como ReadOnly.


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

    quarta-feira, 7 de março de 2018 19:33
    Moderador
  • Para verificar se seu banco de dados está  como read_only execute o comando abaixo, se a coluna is_read_only estiver com o valor 1, ele está, então com o segundo comando é possível alterar para escrita.
    Quanto ao SQL Server ser gratuito, tem a versão express que é sim gratuita.

    SELECT is_read_only, *
    FROM SYS.DATABASES
    WHERE name = 'SEU_BANCO_DE_DADOS';
    
    ALTER DATABASE [SEU_BANCO_DE_DADOS] 
    SET READ_WRITE WITH NO_WAIT;


    Willy Campos

    quinta-feira, 8 de março de 2018 19:24
  • Laonardo, 

    É bom verificar o tamanho da Base de dados, caso seu banco tenha chegado aos 10Gb pode apresentar erros desse gênero.

    Aqui onde administro tinha uma base que chegou aos 10Gb, a aplicação estava funcionando, porem algumas funcionalidade apresentavam erros, apos abertura de chamado com o desenvolvedor ele me informou que a base havia atingido seu limite então movi a base para outro server com o SQL Standard.

    quinta-feira, 8 de março de 2018 19:43