SQL Server Compact 3.5: Será que já está *mesmo* a usar a versão SP1?

Published Fri, Apr 10 2009 15:37 | Alberto Silva

Como referi em posts anteriores, tenho estado de volta do upgrade de uma aplicação para .NET CF 3.5 e SQL Compact 3.5. A aplicação já vem do tempo da .NET CF 1.0 e SSCE 2.0, altura em que não havia suporte por parte do SSCE a parâmetros com nomes, utilizando-se o ponto de interrogação para identificar o local dos parâmetros, por ex. …

UPDATE Clientes SET saldo = ? WHERE nrcliente = ?

…passando-se os parâmetros ao objecto SqlCeCommand pela ordem pela qual apareciam na instrução SQL. O suporte a parâmetros com nomes veio com o SQL Server 2005 Mobile Edition (3.0), passando-se a poder utilizar a notação mais comum:

UPDATE Clientes SET saldo = @novoSaldo WHERE nrcliente = @cliente

Ao executar a aplicação já em .NET CF 3.5 com SSC 3.5, dou-me conta de um erro numa instrução que ainda vinha do tempo do SSCE 2.0 e como tal ainda tinha os tais pontos de interrogação. Alguma investigação em torno da situação leva-me a experimentar substituír os ? por parâmetros com nomes, e ao executar de novo a instrução, a dita já funcionava… a causa? O SQL Compact 3.5 não estava a respeitar a ordem pela qual os parâmetros eram passados ao comando. A alternativa era óbvia, substituír as potenciais dezenas de instruções com os ditos pontos de interrogação por parâmetros com nomes.

No entanto, isto para mim não fazia sentido, não me lembro de ter lido nada que me alertasse para este novo comportamento, e após alguma investigação fui confirmar se já estaria a utilizar o SP1 do SQL Compact 3.5…

Nesta minha nova máquina de desenvolvimento, um Toshiba Tecra S10-128, pensava ter instalado tudo quanto há de mais recente, nomeadamente o Visual Studio 2008 SP1 e o SQL Server 2008 (o SP1 do SQL Server 2008 só saíu esta semana e ainda não o instalei) e com essas ferramentas, veio também o SQL Compact 3.5 SP1. O que eu me tinha esquecido é que essas actualizações não incluem o SP1 para os devices, e ao copiar o ficheiro sqlceca35.dll da pasta \Programas\Microsoft SQL Server Compact Edition\3.5 do PDA para o PC e com o explorer aberto as suas propriedades, constatei que estava a usar a build 3.5.5386, que de acordo com esta tabela, corresponde à versão RTM, portanto sem o SP1:

image

Rapidamente descarreguei o SP1 para Windows Mobile/Windows CE desta página e instalei-o. Actualizei a referência ao System.Data.SqlServerCe.dll para ter a certeza que estava tudo bem, e fiz o deploy da aplicação. Ao testar de novo a situação descrita no início do post, o problema deixou de ser reproduzido, ou seja, foi resolvido no SP1, ainda que não tenha obtido confirmação nas listas de fixes que verifiquei. Pode confirmar no PDA/emulador se está a usar a versão SP1 comparando no registry a chave [HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server Compact Edition\v3.5] com o seguinte ecrã:

image

Outro stress ultrapassado… NEXT!!!

Comments

# Michael A. Delgado said on April 26, 2010 8:03 AM:

Estou com serios problemas para que um arquivo sdf rode com meu programa de VB2008

Aparece a mensagem "The column name is not valid ..."

O sistema funciona perfeito com o banco de dados equivalente en Access 2007, o qual transformei para sdf usando PrimeWorks Console, um programa de conversao de Access para SQL compact SDF

Qualquer pointer e benvindo. Obrigado.

mdelgado@zacglobal.com

Leave a Comment

Name:  
Website:
If you can't read this number refresh your screen
Enter the numbers above:  

Search

This Blog

Tags

Community

Archives

News

  • Você escolheu um software de gestão que se adapta ao seu negócio... Porque há-de deixar que lhe imponham uma solução de mobilidade para as suas forças de venda? Contacte a moving2u e teremos todo o prazer em lhe apresentar as nossas soluções!


    Grab this badge here!

Eventos

Desenvolvimento .net CF

Mobilidade em Português...

Sobre mim...

Syndication

Email Notifications