none
Como sincronizar mediante RDA con SQL server 2005 en Smart Device? RRS feed

  • Pregunta

  • Hola, soy nuevo en esto y tengo unas cuantas dudas con respecto a la sincronización de datos con SQL compact server 2005 y SQL server 2005.

    El problema reside en mi desconocimiento del control de usuarios en SQL server y todo lo relacionado con este tema.
    Acabo de instalar SQL server en mi ordenador, estableciendo un modo mixto de acceso (autentificación de Windows y autentificación de SQL server) donde establecí una contraseña.
    Accedo a al servidor mediante Microsoft SQL Server Management Studio, y creo una nueva Base de datos llamada RemoteDB y dentro de esta una tabla llamada usuarios. Pues bien, mi duda es que si yo quiero acceder a esta tabla usuarios para sincronizar con el PDA mediante RDA, ¿que cuenta y contraseña de usuario he de utilizar? ¿Cómo se configura una cuenta de usuarios nueva (user y password)?


    A continuación adjunto el código de mi programa de prueba (extraído del manual de Unai Zorrilla)


    Información de interés:

    • El servidor IIS parece funcionar correctamente (configurado mediante asistente) pues al acceder a http://192.168.1.102/remoteDB/sqlcesa30.dll se me muestra Microsoft SQL Server Compact Edition Server Agent.
    • El ordenador se llama BIBLIOTECA
    • La instancia de SQL server SQLSERVER
    • La base de datos a la que quiero acceder   RemoteDB
    • La tabla a la que quiero acceder el usuarios
    • Contraseña establecida al instalar SQL server xxxxxxx (ejemplo)


    El problema radica que cuando ejecuto el código y realizo un Pull o un Push salta una excepción, pero no me muestra ningún mensaje, por lo que estoy un poco perdido con el posible fallo.



     

    Code Snippet

     

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlServerCe;
    using System.IO;

    namespace RDAPrueba
    {
        public partial class Form1 : Form
        {
            SqlCeRemoteDataAccess ceRDA;
            string localConnectionString = string.Empty;
            public Form1()
            {
                InitializeComponent();
                ConfigureRDA();
            }

            private void ConfigureRDA()
            {
                ceRDA = new SqlCeRemoteDataAccess();
                //Configuracion del acceso remoto
                ceRDA.InternetLogin = string.Empty;
                ceRDA.InternetPassword = string.Empty;
                ceRDA.InternetUrl = "http://192.168.1.102/RemoteDB/sqlcesa30.dll";


                CreateLocalDb();

                ceRDA.LocalConnectionString = this.localConnectionString;

            }
            private void CreateLocalDb()
            {
                SqlCeEngine engineCe = new SqlCeEngine();

                //Path de la base de datos
                string pathDB = string.Empty;
                pathDB = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
                pathDB = Path.Combine(pathDB, "rda.sdf");

                //Creamos la base de datos vacía
                if (!File.Exists(pathDB))
                {
                    this.localConnectionString = string.Format("Data Source={0}", pathDB);
                    engineCe.LocalConnectionString = this.localConnectionString;
                    engineCe.CreateDatabase();
                }

            }

            private void menuItem1_Click(object sender, EventArgs e)
            {
                //Implementación de Pull
                if (this.ceRDA != null)
                {
                    try
                    {
                        string _oleConnectionString = @"Provider=sqloledb;Data Source=BIBLIOTECA\SQLSERVER;Initial Catalog=RemoteDB;User id=sa;password=xxxxxxx";
                        ceRDA.Pull("usuarios", "select * from usuarios", _oleConnectionString, RdaTrackOption.TrackingOn);
                    }
                    catch (SqlCeException __ERR)
                    {
                        MessageBox.Show(__ERR.Message.ToString());
                    }
                }
            }

            private void menuItem2_Click(object sender, EventArgs e)
            {
                //Implementacion de Push
                if (this.ceRDA != null)
                {
                    try
                    {
                        string _oleConnectionString = @"Provider=sqloledb;Data Source=BIBLIOTECA\SQLSERVER;Initial Catalog=RemoteDB;User id=sa;password=xxxxxxx";
                        ceRDA.Push("usuarios", _oleConnectionString, RdaBatchOption.BatchingOn);
                    }
                    catch (SqlCeException __ERR)
                    {
                        MessageBox.Show(__ERR.Message.ToString());
                    }
                }
            }
        }

    }

     

    • Editado danjes lunes, 9 de noviembre de 2009 19:05
    martes, 12 de febrero de 2008 12:03

Respuestas

  • Me respondo yo mismo, perdón por las molestias.

    El problema lo tenía con el emulador, pues no tenía acceso a red, con lo que no se podía conectar al servidor de BD.
    La solución es bien sencilla, únicamente hay que ir a administrador de emuladores y dispositivos, tras haber configurado active sync para que admita conexiones por DMA, seleccionar el emulador que esté funcionando y elegir la opción de colocar en la base (botón derecho).
    miércoles, 13 de febrero de 2008 9:25

Todas las respuestas

  • Me respondo yo mismo, perdón por las molestias.

    El problema lo tenía con el emulador, pues no tenía acceso a red, con lo que no se podía conectar al servidor de BD.
    La solución es bien sencilla, únicamente hay que ir a administrador de emuladores y dispositivos, tras haber configurado active sync para que admita conexiones por DMA, seleccionar el emulador que esté funcionando y elegir la opción de colocar en la base (botón derecho).
    miércoles, 13 de febrero de 2008 9:25
  • Hola danjes:

    Por lo que vi en el tema, ya has logrado hacer una conexion de tu ppc a una base de datos.

    La verdad yo he leido, pero no comprendo, tengo un ejemplo para hacer una merge replication, pero hasta el momento al poner el localhost/micarpeta7sqlcesa30.dll no me muestra el mensaje de que se estça conectando, agradecerçia mucho tu apoyo para lograr meter datos a una sdf de una base de datos en un servidor.

    mi correo es g_alpha@hotmail.com.

    viernes, 7 de marzo de 2008 1:19
  • Me gustaría poder ayudarte mejor, pero se muy pero que muy poco del tema, si a eso le sumamos que mi sincronización es mediante RDA y no mediante merge replication. Pero por lo que comentas yo empezaría a investigar el tema del servidor IIS si lo tienes configurado correctamente. En primer lugar cuando pones localhost, no se si lo que estás realizando es un programa en el propio servidor o como en mi caso que es un PDA, ya que de ser como en mi caso lo que tienes que especificar es la IP del servidor.
    Tampoco se si la configuración de IIS es correcta, como primer paso para probarlo, es desde el ordenador que tienes instalado SQL Server (mínimo versión standar ya que la express no sirve para RDA ni merge, o eso creo) e IIS funcionando y configurado adecuadamente es introducir en Internet explorer localhost/micarpeta/sqlcesa30.dll y ver que te responde el servidor. En el caso de responder el agente ya tienes un paso dado.
    Espero que esto te oriente un poco en tu problema, ya que no soy el más adecuado para responderte por las muchas dudas que aún tengo yo en el tema (sobre todo en configuracion de IIS y sql server)
    Ya comentarás como te ha ido y de esa forma servir de ayuda a más gente, entre ellos yo
    viernes, 7 de marzo de 2008 12:42
  • Gracias por contestar.

    Me gustaría me enseñaras como hacer la sincronizacion por RDA, te comento que el error que me tira es al poner precisamente la direccion http://localhost/PDA/sqlcesa30.dll, (donde PDA es mi carpeta) vaya se supone que deberia poner una pagina con la siguiente leyenda: SQL Server Mobile Agent Server 3.0 y ps namas no logro ver esa leyenda.

    Leí también que necesito SQL versión Standar o mayor, yo tengo versión persona del SQL 2000 y Express de SQL 2005, pero me queda la pregunta: eso influirá en no ver la página de confirmación?.

    Te comento que estoy tratando de hacer una aplicación para PDA.

     

    viernes, 7 de marzo de 2008 15:22
  • Parece que con mi mensaje inicial se mucho de RDA, y la verdad es que se lo mínimo y aún estpy intentando aprender. Por lo que te voy a hacer unas recomendaciones:
    Un libro interesante (yo me lo he comprado, pero aún no lo he terminado de leer):


    Microsoft Mobile Development Handbook
    byAndy Wigley, Daniel MothandPeter Foot
    Microsoft Press 2007 (681 pages)
    ISBN:9780735623583
    Por desgracia no está en español. Si sabes de algun libro en español para programar smart device con visual studio hazmeló saber.

    Un enlace muy interesante por Unai Zorilla Castro donde habla de RDA y merge:
    http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voices/MTJ_3575/default.aspx

    Y una herramienta muy util de microsoft (por no decir imprescindible):

    Herramientas de servidor de SQL Server 2005 Compact Edition

    Descripción rápida

    Herramientas de servidor de Microsoft SQL Server 2005 Compact Edition actualiza los servidores que ejecutan IIS para que admitan las soluciones de conectividad de una base de datos de SQL Server 2005 Compact Edition de un dispositivo móvil, un equipo de escritorio o Tablet PC en servidores de bases de datos que ejecuten el SP3a de SQL Server 2000 y las versiones anteriores.

    Detalles rápidos

     

    Nombre del archivo:             Sqlce30setupes.msi

    Versión:      3.1

    Artículos de Knowledge Base (KB): KB920700

    Fecha de publicación:           11/01/2007

    Idioma:        Español

    Tamaño de la descarga:       1.6 MB

     

    Web:

    http://www.microsoft.com/downloads/details.aspx?displaylang=es&FamilyID=4e45f676-e69a-4f7f-a016-c1585acf4310




    Y decirte que yo también necesito que me enseñen como sincronizar con RDA, pues estpy haciendo un proyecto para PDA y aún no se bien como usar el tema de la sincronización. Por lo que te sugiero que te leas muchos manuales antes de seguir preguntando sin ton ni son.

    Por cierto, si es para usar con PDA el método RDA, desde ya te digo que necesitas SQL server standar o superior.
    viernes, 7 de marzo de 2008 16:31
  • Me respondo yo mismo, perdón por las molestias.

    El problema lo tenía con el emulador, pues no tenía acceso a red, con lo que no se podía conectar al servidor de BD.
    La solución es bien sencilla, únicamente hay que ir a administrador de emuladores y dispositivos, tras haber configurado active sync para que admita conexiones por DMA, seleccionar el emulador que esté funcionando y elegir la opción de colocar en la base (botón derecho).

    Buen dia, soy algo novato en esto, me podrias colaborar en la configuracion del emulador para que pueda tener acceso a red, estoy tratando de hacer lo mismo pero todavia no he podido, estoy usando tambien el manual de Unai Zorrilla, que sistema operativo utilizas ??.

    Gracias.

    martes, 5 de octubre de 2010 16:42