我正在开发一个项目,我需要将旧数据从生产服务器传输到存档服务器。如果在传输过程中出现任何故障,我在处理服务器之间的数据一致性时遇到问题。这只是实施交易。
每当数据传输过程中出现系统故障时,进程应该从归档服务器中删除所有传输的记录,并在系统恢复时将整个传输过程重新启动。
注意:由于我的客户所在地的某些权限/设置原因,我无法使用分布式事务。
有没有办法在C#.net或SQL Server 2008中处理这个问题?
答案 0 :(得分:0)
以下代码用于在整个事务的任何部分失败时编辑数据库之前“回滚”到。您可以尝试修改它以满足您的需求。
(首先引用System.Transactions-namespace)
System.Transactions
using(TransactionScope transaction = new TransactionScope())
{
try
{
//modify your database here
transaction.Complete();
}
catch(Exception)
{
transaction.Dispose();
}
}
答案 1 :(得分:0)
DECLARE @TranCounter INT;
SET @TranCounter = @@TRANCOUNT;
IF @TranCounter > 0
SAVE TRANSACTION savepointrb1;
ELSE
BEGIN TRANSACTION;
BEGIN TRY
-- your code will be here. if you are using multiple stored procedures then
apply this code on that
IF @TranCounter = 0
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
IF @TranCounter = 0
ROLLBACK TRANSACTION;
ELSE
IF Xact_state() <> -1
ROLLBACK TRANSACTION savepointrb1;
END CATCH