Pregunta sobre SQL Server

shifis
30 de Noviembre del 2004
Buenas tardes, mi nombre es Tere Castro, y estoy trabajando para una cadena de supermercados .
En la actualidad manejamos un sistema en las cajas registradoras echo en clipper y que usa dbfs.
Nos queremos migrar a Sql Server con Visual .NET, el problema es que necesito sabes si en Sql Server existe la opcion de que en caso de que falle la red siga funcionando el programa en modo local y que una ves que se restablesca la coneccion se pueda actualizar la informacion en la base de datos de la red.
Espero me haya explicado bien y me puedan dar un Norte de como empezar.
Muchas Gracias

Rodolfo Reyes
30 de Noviembre del 2004
Se me ocurren dos opciones:

Por ejemplo, yo tengo un sistema en el cual tenemos tres bases de datos(producci贸n, desarrollo y pruebas). En el login de la aplicaci贸n aparte de pedir un usuario y contrase帽a, pido un parametro adicional, el cual me indica a cual de las tres bases de datos me quiero comunicar.

La otra, es que el SQL Server permite tener bases de datos replicadas(creo que esto es lo que mas te convendr铆a). Tener una instalaci贸n local, y una base de datos remota central. Busca en la ayuda de SQL Server sobre replicaci贸n.


kheops
30 de Noviembre del 2004
@Tere,

SQL Server tiene la capacidad de manejar transacciones, lo que evita la p茅rdida de datos en caso de que una instrucci贸n que agregue o modifique informaci贸n falle, ya que se har铆a un RollBack, regresando la informaci贸n al estado previo (no se pierde nada).

T煤 desde tu aplicaci贸n .NET, validar铆as que la transacci贸n se haya ejecutado sin problemas y en caso de ser as铆 (que por ejemplo no exista conexi贸n a la base de datos), grabar la informaci贸n en una tabla temporal (con la misma estructura a la utilizada en la bd remota (en el server). Podr铆as programar un componente que monitoree la conexi贸n con el servidor y en caso de que encuentre respuesta hacer la transferencia de los datos en tu tabla local (o en un archivo .XML, que ya es soportado por la version .NET de ADO) a la base de datos remota). Pero te aclaro... NO ES UNA CARACTERISTICA DE SQL el actualizar los datos en caso de falla. ESA ES TU FUNCION COMO PROGRAMADOR.

Aqu铆 est谩 un ejemplo de c贸mo podr铆as hacer uso de una transacci贸n en VB.NET. Necesitar谩s una buena actualizaci贸n para hacer el cambio de CLipper VB.NET o C# .NET (ya que no dices que lenguaje .NET utilizar谩s).


Visual Basic .NET
' Transactions should be enclosed in a Try...Catch...Finally
' block to catch any exceptions that might occur
Dim myTransaction As System.Data.OleDb.OleDbTransaction
Try
myConnection.Open()
' This creates a new transaction object and assigns it to
' myTransaction
myTransaction = myConnection.BeginTransaction
' Adds Update1 and Update2 to the transaction.
Update1.Transaction = myTransaction
Update2.Transaction = myTransaction
' Executes Update1 and Update2
Update1.ExecuteNonQuery()
Update2.ExecuteNonQuery()
' If no exceptions occur, commits the transaction
myTransaction.Commit()
Catch ex As Exception
' The transaction is not executed if an exception occurs
myTransaction.Rollback()
Finally
' Whether an exception occurs or not, the connection is then closed
myConnection.Close()
End Try