Usuário com melhor resposta
Quando executo o aplicativo recebo a mensagem de erro dizendo que o banco de dados é apenas leitura

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.
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]
- Marcado como Resposta Leonardo Amaral Scudellari sexta-feira, 23 de março de 2018 23:45
-
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
- Marcado como Resposta Leonardo Amaral Scudellari sexta-feira, 23 de março de 2018 23:45
-
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.
- Marcado como Resposta Leonardo Amaral Scudellari sexta-feira, 23 de março de 2018 23:46
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]
- Marcado como Resposta Leonardo Amaral Scudellari sexta-feira, 23 de março de 2018 23:45
-
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
- Marcado como Resposta Leonardo Amaral Scudellari sexta-feira, 23 de março de 2018 23:45
-
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.
- Marcado como Resposta Leonardo Amaral Scudellari sexta-feira, 23 de março de 2018 23:46