C sharp - Conector entre bases de Datos SQL Server

   
Vista:

Conector entre bases de Datos SQL Server

Publicado por Rosa (4 intervenciones) el 19/07/2016 17:42:19
Hola,

tengo que programar en c# un "conector" entre dos aplicaciones que tienen como motor de base de datos SQL Server.
Este conector será el encargado de traspasar datos de una base de datos a otra. Por ejemplo, cuando demos de alta un cliente en la base de datos1 tendrá que replicarlo en la base de datos 2.
El problema es que el diseño de las bases de datos no es igual, y por poneros un ejemplo la tabla de Clientes de la base de datos 2 tiene muchos más campos que la tabla de clientes de la base de datos 1. Además, los que se pueden considerar "comunes" (numero cliente, nombre, dirección) tienen diferente formato.
Tengo experiencia como programadora en c# y SQL Server, pero siempre con Proyectos Windows Forms que utilizan una única base de datos, e incluso he programado Servicios de Windows, pero nunca se me ha presentado algo así y estoy algo perdida... He buscado información sobre el uso de tablas temporales, pero no sé que hacer...
Cómo podría enfocar el tema? Necesito algo de ayuda...
Muchas gracias a todos/as por vuestras respuestas!

Rosa.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Conector entre bases de Datos SQL Server

Publicado por jose manuel (5 intervenciones) el 20/07/2016 00:38:41
Pudieras crearte un Stored procedure que coloque los datos del evento clic al guardar tu informacion

y recibirla en ambas tablas

algo asi

Insert into [Db1].[dbo].[tabla1] (value1,value2) values(@value1,@value2)

Insert into [Db2].[dbo].[tabla2] (value1,value2) values(@value1,@value2)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Conector entre bases de Datos SQL Server

Publicado por johndoe@yopmail.com johndoe@yopmail.com (1 intervención) el 21/07/2016 00:10:48
Hola lo que necesitas es un ETL este proceso lo puedes automatizar para migrar datos
de una base a otra mediante un mapeo de tablas de origen a destino , pudiendo establecer condiciones
para los campos es decir excepciones de longitud conversion, etc.

Hay varias herramientas este es un buen articulo.

http://www.dataprix.com/blogs/respinosamilla/herramientas-etl-que-son-para-que-valen-productos-mas-conocidos-etl-s-open-sour

otra explicacion aqui

http://www.sqlshack.com/es/maneras-de-usar-y-ejecutar-los-paquetes-sql-server-integration-services/

finalmente:

https://technet.microsoft.com/es-es/library/ms169917%28v=sql.110%29.aspx?f=255&MSPPError=-2147217396

Te recomiendo seguir el tutorial pero tu crea dos bases de datos con una tabla cada base y en la tabla de la
segunda base sea la misma para que solo migres sin ninguna regla, despues modifica la longitud de algun
campo de la segunda tabla y modificas tu ETL, agrega mas campos y con eso ya estaras lista para resolver tu problema.


Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Conector entre bases de Datos SQL Server

Publicado por Lady Garay Gutierrez (2 intervenciones) el 25/07/2016 07:02:35
Podrías hacer un insert con el inner join jalando ambas tablas, y en los campos que son parecidos o iguales pero diferente nombre insertarías el mismo valor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo

Conector entre bases de Datos SQL Server

A ver cuéntanos como está el asunto.

Bases de datos diferentes en el mismo servidor?, uno de los servidores es remoto?.

No creo que sea muy complicado el asunto.

2 bases de datos=2 cadenas de conexión

Al insertar, como en una tabla sabes que los campos que guardas están completos, simplemente hace el insert.
En la segunda tabla como tiene diferentes campos, insertas los que tienes, ya que no puedes meter datos que no tengas, ahora que si tu aplicación recibe toda la información de la tabla con mayor número de campos, es casi lo mismo en la de mayor cantidad de campos ingresas todos los datos y en la tabla con menos campos, solo los necesarios.

Como verás no se dónde esté la parte complicada.

Ahora todo eso lo podrías hacer haciendo uso de TransactionScope() o transacciones promovidas si fuera el caso.

Saludos cordiales,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Conector entre bases de Datos SQL Server

Publicado por Rosa (4 intervenciones) el 19/08/2016 08:44:08
Hola,

muchas gracias a todos! Poco a poco estoy consiguiendo...

Como comenta Wilfredo, con 2 cadenas de conexión controlas las conexiones a las BBDD.

El hecho de que el motor de BBDD sea el mismo para las dos Bases de Datos me está beneficiando mucho. También el hecho de que el traspaso de datos no sea síncrono como tal, es decir, no se traspasa un item hasta que no está totalmente introducido.

Con lo que hay que tener mucho cuidado es con los tipos de datos: con los enteros no hay problema, pero con los nvarchar hay que comprobar que el campo de la BBDD origen quede con la longitud del campo de la BBDD destino. Si es mayor, hay que reducirlo.

Con unos INSERT convenientemente parametrizados me está quedando muy bien...

Gracias a todos!

Rosa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar