Usuário com melhor resposta
Espaco de armazenamento insuficiente SqlCE

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
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
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] -
-
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.
-
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] -
-
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] -
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.
-
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] -
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.
-
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