none
Espaco de armazenamento insuficiente SqlCE RRS feed

  • Pergunta

  • Fala pessoal,

    Bom eu estou na luta em um desenvolvimento de uma aplicação para mobile com CSharp e SqlCE 3.5. Primeiro encontrei um problema na performance entre a aplicação e o banco. Notei uma demora excessiva ao salvar grandes quantidade de registros. Depois de quebrar a cabeça para melhorar codigo e tal vi que o problema estava na abertura da conexão fiz um teste deixando a conexão com o banco aberta e caiu surpreendentemente uns 90%, assustei com a melhora só que me surgiu outro problema  ao ficar utilzando o sistema, salvando e atualizando aparece o seguinte erro: "ESPACO DE ARMAZENAMENTO INSUFICIENTE PARA COMPLETAR A OPERACAO". Estou pesquisando sobre isso a mais ou menos 1 dia e meio sem sucesso.

    Alguem ja passou ou teria uma ideia de como solucionar isso ?

    Qualquer ideia sera de grande ajuda.

    Desculpa o tamanho da mensagem, apenas queria descrever o maximo do que passei.

    Obrigado.

    • Editado EderAdz quinta-feira, 14 de outubro de 2010 21:36 Melhora na mensagem
    quinta-feira, 14 de outubro de 2010 21:13

Respostas

  • Eder,

    Certo, então eu andei pesquisando e encontrei informações na Microsoft sobre o CE, que indicam um limite de 256 conexões simultâneas, como você especificou o número de 80, acredito que poderá aumentar este valor.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    • Marcado como Resposta EderAdz quinta-feira, 18 de novembro de 2010 16:39
    quarta-feira, 10 de novembro de 2010 13:04
    Moderador

Todas as Respostas

  • Eder,

    Aconselho a consultar a documentação oficial do SQL Server, denominado Books On-Line, com certeza você poderá encontrar diversas informações sobre o SQL CE!!!!

    Mas o que você deseja saber, é a capacidade de armazenamento de dados utilizada pelo CE?

    Tenho certeza que este link poderá ser útil: http://msdn.microsoft.com/pt-br/library/bb380177(SQL.90).aspx#XSLTsection131121120120, mesmo sendo sobre o SQL Server 2005 CE.

    Mas para adiantar um pouco o SQL Server CE possui a capacidade de armazenar no máximo 4GB de dados por arquivos de banco de dados.

    A principal função do SSCE é permitir o armazenamento e o acesso seguros a dados relacionais transacionais. Você pode executar consultas SQL que incluem consultas DDL (Data Definition Language) e DML (Data Manipulation Language) através do mecanismo do SSCE. Com o SSCE, a instância do banco de dados é criada como um único arquivo.sdf. Nesse banco de dados, você pode definir tabelas com chaves primárias e restrições. O SSCE dá suporte à integridade referencial completa por meio de restrições de chaves estrangeiras, exclusões e atualizações em cascata.

    Além disso, o SSCE dá suporte aos seguintes recursos:

    • Várias conexões simultâneas para acesso a dados multithread.

    • Proteção por senha e criptografia de 12 bits do arquivo de dados .sdf do SSCE.

    • Uma grande variedade de tipos de dados de coluna.

    • Cursores atualizáveis e roláveis para um acesso rápido e fácil aos dados conectados.

    • Bancos de dados que podem crescer até 4 GB.

    • Sincronização com o SQL Server por meio de replicação de mesclagem e RDA (Remote Data Access).


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    quinta-feira, 14 de outubro de 2010 22:51
    Moderador
  • Junior,

    Obrigado pelas informações meu caro.

    Na verdade gostaria de saber sobre esse erro, pois dificilmente meu banco chegará ao 4gb de tamanho, ele esta apenas com 1.5mega, o que não entendo é porque quando mantenho a conexão aberta efico exercutando operações chega uma hora que ele a aplicação pega essa exception que falei acima.

    Quando se abre a conexão com o SqlCE existe um número de transações que essa conexão "AGUENTA"  ?

    No PDA também vi que espaço tanto para armazenamento quanto de memória ram tem de sobra, então acredito que isso não tem a ver com o PDA em si.

    Creio que é alguma coisa com o SqlCE mesmo, pois como disse no post anterior se eu abro a conexão executo a instrução, e fecho a conexão, não acontecia o erro, porém a demora em um grande volume de registros fica inviável isso.

    Obrigado mais uma vez a todos.

    sexta-feira, 15 de outubro de 2010 11:54
  • Eder,

    Não sei exatamente informar se o SQLCe apresenta um limite de conexões. O SQL Server possui configurações de timeout, talvez isso possa estar configurado para esta instância do SQL CE em sua máquina.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    sexta-feira, 22 de outubro de 2010 10:57
    Moderador
  • Bom dia EderAdz.

    Você conseguiu resolver o seu problema com a mensagem "Espaço insuficiente de armazenamento para concluir a operação"? Estou tento o mesmo problema mas não consegui até agora resolvê-lo.

    Abraço.

     

    segunda-feira, 1 de novembro de 2010 09:46
  • Eliezer,

    Qual é o tamanho do seu arquivo .sdf?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    segunda-feira, 1 de novembro de 2010 12:42
    Moderador
  • Eliezer,

    Cara consegui melhorar sim, porém não sei se foi a melhor solução, mas resolveu sim.

    Dando umas pesquisadas vi que realmente quando se vai abrir uma conexão fica bem lento, assim deixo uma conexão aberta faço o que tenho que fazer depois eu a fecho. Quando vejo que são muitas operações coloquei um contador e limito a um certo número de transações ai fecho e reabro a conexão.

    Fui fazendo testes e mais testes para encontrar a "quantidade" de consultas, inserções,etc. e consegui resolver o problema.

    Fica ai a sugestão, porém deve haver outra forma mas, por enquanto foi a única que encontrei.

    Boa sorte Eliezer.

    terça-feira, 2 de novembro de 2010 10:40
  • Eliezer,

    E qual foi a quantidade de transações que você identificou?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    sábado, 6 de novembro de 2010 15:35
    Moderador
  • Junior,

    Então eu coloquei apenas 80 transações, pois assim garanti que não aparecesse mais o erro, agora acho que cada caso deve ser um caso, se pode aguentar bem mais dependendo do equipamento nao sei, mas para mim funcionou e não deu mais erro.

    Abraços.

    segunda-feira, 8 de novembro de 2010 19:52
  • Eder,

    Certo, então eu andei pesquisando e encontrei informações na Microsoft sobre o CE, que indicam um limite de 256 conexões simultâneas, como você especificou o número de 80, acredito que poderá aumentar este valor.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    • Marcado como Resposta EderAdz quinta-feira, 18 de novembro de 2010 16:39
    quarta-feira, 10 de novembro de 2010 13:04
    Moderador