none
Erro no SQL SERVER CE - Not enough storage... RRS feed

  • Pergunta

  • Boas.

    Estou a desenvolver uma aplicação em vb.net 2003 para pocketpc e estou a usar o sql server ce 2.0. Aleatóriamente recebo uma excepção no pocketpc "Not enough storage is available to complete this operation".

    Estou a usar sqlcecommands, datasets, dataadapters no programa. Leio dados para datasets via dataadapters e insiro/actualizo/apago registos usando "executenonquery" do sqlscecommand.

    Alguém sabe como contornar este erro?

    Vi esta página na Microsoft mas não sei bem se me vai resolver o problema: http://support.microsoft.com/kb/827837/pt-br.

    Já agora onde posso arranjar este update para a dll que diz na página? Existe algum e-mail para onde possa escrever? Se alguém tiver um link directo para a dll em questão, agradecia.

    Tenho muita urgência em resolver isto!

    Obrigado.

     

    quinta-feira, 4 de janeiro de 2007 16:31

Todas as Respostas

  • Olá, novamente, vamos ao mesmo blablabla de sempre, tenha em mente que voce não está desenvolvendo para um Desktop, e sim para um Pocket com memória e processamento limitados, uma questão importante para voce ter em mente é que a memória do dispositivo é dividida em processamento e armazenamento, ou seja, se voce tem em seu dispositivo uma base SqlCe ,que ocupa por exemplo 5Mb, e na sua aplicação voce busca todos os dados e coloca-os em um dataset, voce acabou de duplicar a mesma informação na mesma memória, ou seja, voce já estava utilziando 5Mb do armazenamento e passou a utilizar praticamente 5 mb no processamento, que são a mesma memória, agora vem o pior, se voce não liberar esse dataset, e abrir um outro, vc vai passar a utilizar 10 mb da memória de processamento. É claro que estou utilizando exemplos, mas isso sim pode acontecer, e é comum esse erro que voce reportou, pode acontecer também outros erros, onde o SO vai pedir para voce fechar alguma aplicação pois o mesmo está sem memória disponível para processamento.
    Sugiro fortemente a que voce utilize SqlCeDataReader ao invés do Dataset, e certifique-se de estar utilizando Dispose nas instancias de seus objetos não mais utilizados, garanto que o seu problema vai acabar, se voce encontrar alguma outra alternativa, e continuar a utilizar o DataSet, potencialmente, quando esta sua aplicação estiver em produção, um usuário vai reportar para voce que após 3 horas de utilização da aplicação esse erro aconteceu....

    Abraços
    Julio Tsukamoto

    quinta-feira, 4 de janeiro de 2007 18:54
  • Julio,

     

    achei muito interessante sua colocação, nós iniciantes em desenvolver aplicações para pocket temos que nos preocurar com o consumo de memória no device, tenho o hábito de utilizar datasets e gostaria de conhecer mais o SqlCeDataReader, na minha aplicação estou aplicando assim:

     

    Code Snippet

    dim conn as new sqlceconnection(conexao)

    conn.open()

    dim sql as string = "SELECT * FROM Cardapio"

    dim da as sqlcedataadapter

    dim ds as dataset

    da = new sqlcedataadapter(sql,conn)

    ds = new dataset

    da.fill(ds, "Cardapio")

     

    como poderia utilizar esse código com o SqlCeDataReader?

     

    domingo, 6 de maio de 2007 22:47