Ir al contenido


Foto

SQL Server Compact


  • Por favor identifícate para responder
7 respuestas en este tema

#1 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 21 junio 2010 - 08:21

Necesito saber como puedo acceder a una base de datos de Microsoft SQL Server Compact desde un programa hecho en delphi. Fijaros en que no estoy hablando del SQL Server normal, donde tienes un servidor, y puedes acceder mismamente con ADO, entre otros. De lo que estoy hablando es de la versión Compact, que es una especie de base de datos "embedded" que se han inventado los de Microsoft y que guarda los datos en ficheros con la extensión ".sdf".

No encuentro la forma de acceder a esos datos desde Delphi, y tampoco encuentro un conector ODBC que me permita usar ADO  :(

¿Alguien sabe como acceder a esos datos?

  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.446 mensajes
  • LocationMéxico

Escrito 21 junio 2010 - 08:26

Que tal amigo, a ver si esto te sirve de algo, de cualquier forma sigo buscando otras soluciones.

http://www.eggheadca...sql-ce-wit.aspx

Salud OS
  • 0

#3 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 21 junio 2010 - 08:54

Saludos.

También tienes los AnyDac.

Lo "malo" es que son de paga.
  • 0

#4 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 21 junio 2010 - 09:23

Por lo que parece, puedes acceder de forma parecida a como lo haces con SQL Server, es decir, a través de ADO. El paquete de SQL Server Compact debería incluir un Ole DB Provider.

http://msdn.microsof...2(SQL.100).aspx

  • 0

#5 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 21 junio 2010 - 09:34

Por lo que parece, puedes acceder de forma parecida a como lo haces con SQL Server, es decir, a través de ADO. El paquete de SQL Server Compact debería incluir un Ole DB Provider.


Debería pero yo no lo encuentro :( , con SQL Server nunca he tenido problemas para acceder por ADO pero con este "compact" no hay manera . Por ahí he leído algo sobre OleDB pero estoy bastante perdido.
  • 0

#6 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 21 junio 2010 - 09:56


Por lo que parece, puedes acceder de forma parecida a como lo haces con SQL Server, es decir, a través de ADO. El paquete de SQL Server Compact debería incluir un Ole DB Provider.


Debería pero yo no lo encuentro :( , con SQL Server nunca he tenido problemas para acceder por ADO pero con este "compact" no hay manera . Por ahí he leído algo sobre OleDB pero estoy bastante perdido.


Aquí dice que no hay que hacer nada especial, que al instalar el SQL Server Compact Edition en el PC, ya se instala y registra el provider OleDB (SQLCEOLEDB30.DLL).

http://msdn.microsof...58(SQL.90).aspx

Una vez instalado, ya solo deberías necesitar un objeto ADOConnection en Delphi, y configurarlo para utilizar ese Provider.
  • 0

#7 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 22 junio 2010 - 02:13

Tengo algún avance, pero no es muy prometedor  :(

Parece ser que el Driver que permite hacer una conexión ADO no esta "muy maduro", y por eso no se muestra en la lista de "Proveedores" cuando vas a configurar la cadena de conexión.

Pero hay dos alternativas, escribir la cadena de conexión "a mano":


delphi
  1. Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=c:\test.sdf



O modificar el registro para que se muestre:


delphi
  1. Windows Registry Editor Version 5.00 
  2.  
  3. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{F49C559D-E9E5-467C-8C18-3326AAE4EBCC}\OLE DB Provider] 
  4. @="SQL CE OleDB Provider" 



Pero ...  :( aunque ya me deja conectar, cada vez que intento hacer un simple select me devuelve el error "Un objeto estaba abierto" , sin mas explicación. Buscando en google encontré un sitio donde dicen que ese error lo muestra cuando en la tabla hay un campo con mas de 128 caracteres, así que hago la prueba con una tabla con los campos mas pequeño y funciona  :o

Ahora se entiende que piensen que no esta todavía "maduro". Aunque si realmente es un bug yo creo que ya lo debían de haber reparado, ya que la pagina es del 2008, tiempo suficiente para arreglar esto.  :@

En fin, sigo buscando ...  :
  • 0

#8 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.446 mensajes
  • LocationMéxico

Escrito 22 junio 2010 - 07:26

Vaya, si que está denso este asunto, veré si encontramos algo que nos ayude.

Salud OS
  • 0




IP.Board spam blocked by CleanTalk.