none
Sincronizar 2 equipos con SQL Express RRS feed

  • Pregunta

  • Hola, les cuento mi problema:

    Tengo una aplicación desarrollada con Visual Studio 2008 en C#, que gestiona los datos con SQL Server 2005 Express. Utilizo SQL Server Managment Studio para crear y editar estas bases de datos.

    Esta aplicación debe funcionar exactamente igual en dos equipos portátiles por separado. Es decir, que se podrán realizar altas, bajas y modificaciones en ambos. Y cada cierto tiempo estos ordenadores se tendrán que sincronizar.

    Estoy bastante perdido en esto:

    1º ¿Cómo me recomiendan que los conecte para sincronizar? Cable cruzado? LAN?

    2º No tendría ningún problema en gestionar la sincronización a mano, es decir leer cada tabla y realizar las operaciones oportunas. Pero una vez conectados, cómo accedo a la base de datos de cada uno desde el otro equipo y viceversa??

    Espero que puedan ayudarme.

    Un saludo y muchas gracias.

    lunes, 31 de enero de 2011 10:38

Respuestas

  • ¿Cómo me recomiendan que los conecte para sincronizar? Cable cruzado? LAN?

    Es lo mismo. Si conectas entre sí los puertos Ethernet de los dos equipos, bien sea con un cable cruzado, o bien sea con dos cables directos y un hub o switch entre medias, en ambos casos lo que tienes es una LAN que interconecta los dos equipos. La principal diferencia es que si conectas con un switch, y en ese switch hay conectadas más cosas, puede ser que alguna de esas "cosas" te preste servicios adicionales, por ejemplo podría haber un servidor DHCP que te asigne direcciones de red, o un servidor de nombres que te resuelva los nombres de los equipos. Pero a la hora de sincronizar las bases de datos, te da igual: en todos los casos los dos equipos se hablan entre sí a través de una conexión local.

    No tendría ningún problema en gestionar la sincronización a mano, es decir leer cada tabla y realizar las operaciones oportunas. Pero una vez conectados, cómo accedo a la base de datos de cada uno desde el otro equipo y viceversa??

    El SQL Server Express por defecto se instala de forma que sólo es accesible desde el equipo local. El primer paso es abrirlo al exterior. Desde SSMS Express, asegurate de que tienes marcada la casilla que permite el acceso exterior en las propiedades del server, y desde el Configuration Manager, asegúrate de que habilitas el protocolo TCP/IP para acceso desde el exterior. También, en el cortafuegos de Windows (que se configura desde el Panel de Control) tendrás que permitir el acceso desde el exterior al SQL Server.

    Una vez que has abierto el SQL Server, para acceder desde el segundo equipo al primero basta con que tu programa ponga en la cadena de conexión el nombre del PC al que te conectas seguido de la instancia del servidor, por ejemplo, connectionString="Server=PC2\SQLEXPRESS;User Name=...;Password=...;Initial Catalog=MiBase".

    Ojo con las credenciales, hay que poner algo que entienda la otra máquina, bien sea usuario y password como en el ejemplo anterior (y para eso tendrías que crear ese usuario en Sql Server y habilitar la autenticación en modo mixto) o bien usar autenticación integrada, lo cuál requeriría que en los dos PCs exista el mismo usuario con la misma password.

    Finalmente, ojo no vayas a estar usando una instancia de usuario ("user instance=true" en la cadena de conexión). Estas instancias sólo son accesibles localmente, no podrías hacer la conexión desde el otro equipo. Si estás trabajando así, tendrás que "attachar" la BD para que sea una instancia fija en el SQL Server, y cambiar en consonancia la cadena de conexión en el programa.

    lunes, 31 de enero de 2011 11:01

Todas las respuestas

  • ¿Cómo me recomiendan que los conecte para sincronizar? Cable cruzado? LAN?

    Es lo mismo. Si conectas entre sí los puertos Ethernet de los dos equipos, bien sea con un cable cruzado, o bien sea con dos cables directos y un hub o switch entre medias, en ambos casos lo que tienes es una LAN que interconecta los dos equipos. La principal diferencia es que si conectas con un switch, y en ese switch hay conectadas más cosas, puede ser que alguna de esas "cosas" te preste servicios adicionales, por ejemplo podría haber un servidor DHCP que te asigne direcciones de red, o un servidor de nombres que te resuelva los nombres de los equipos. Pero a la hora de sincronizar las bases de datos, te da igual: en todos los casos los dos equipos se hablan entre sí a través de una conexión local.

    No tendría ningún problema en gestionar la sincronización a mano, es decir leer cada tabla y realizar las operaciones oportunas. Pero una vez conectados, cómo accedo a la base de datos de cada uno desde el otro equipo y viceversa??

    El SQL Server Express por defecto se instala de forma que sólo es accesible desde el equipo local. El primer paso es abrirlo al exterior. Desde SSMS Express, asegurate de que tienes marcada la casilla que permite el acceso exterior en las propiedades del server, y desde el Configuration Manager, asegúrate de que habilitas el protocolo TCP/IP para acceso desde el exterior. También, en el cortafuegos de Windows (que se configura desde el Panel de Control) tendrás que permitir el acceso desde el exterior al SQL Server.

    Una vez que has abierto el SQL Server, para acceder desde el segundo equipo al primero basta con que tu programa ponga en la cadena de conexión el nombre del PC al que te conectas seguido de la instancia del servidor, por ejemplo, connectionString="Server=PC2\SQLEXPRESS;User Name=...;Password=...;Initial Catalog=MiBase".

    Ojo con las credenciales, hay que poner algo que entienda la otra máquina, bien sea usuario y password como en el ejemplo anterior (y para eso tendrías que crear ese usuario en Sql Server y habilitar la autenticación en modo mixto) o bien usar autenticación integrada, lo cuál requeriría que en los dos PCs exista el mismo usuario con la misma password.

    Finalmente, ojo no vayas a estar usando una instancia de usuario ("user instance=true" en la cadena de conexión). Estas instancias sólo son accesibles localmente, no podrías hacer la conexión desde el otro equipo. Si estás trabajando así, tendrás que "attachar" la BD para que sea una instancia fija en el SQL Server, y cambiar en consonancia la cadena de conexión en el programa.

    lunes, 31 de enero de 2011 11:01
  • Muchísimas gracias por tan rápida respuesta!
    Me pongo a trabajar en ello a ver si lo consigo.
    lunes, 31 de enero de 2011 11:04