根据你连接数据库的不同,事务控制的方法有所不同。
对于SQL server来说,一般是调用connection的BeginTransaction方法开始事务,执行完成后用commit来提交,错误处理中使用Rollback来回滚。
而对于Oracle来说,打开一个connection就自动开始事务,执行完成后commit就可以了,出现错误一样用RollBack来回滚。
Java中为了控制事务的一致性,会使用插入回滚点、callback方法,保证数据不被篡改,示例如下:public String delete(String id) {
String ID = id
db = new getConnection()
Connection con = db.getConnection()
try {
con.setAutoCommit(false)
db.executeUpdate("delete from helloworld where ID=" + ID)//更新 *** 作1
db.executeUpdate("delete from helloworld _book where ID=" + ID)//更新 *** 作2
db.executeUpdate("delete from helloworld_user where ID=" + ID)//更新 *** 作3
con.commit()//提交JDBC事务
con.setAutoCommit(true)
db.close()
return “success”
}
catch (Exception e) {
con.rollBack()//回滚JDBC事务
e.printStackTrace()
db.close()
return “fail”
}
}
在这一个随笔中将介绍在package中如何使用事务来保证数据的完整性和一致性。在SSIS中有两种事务:分布式事务处理事务(Distributed Transaction Coordinator Transactions):在task,package中使用单独一个或者多个事务处理
本地事务(Native Transaction):SQL Server引擎级别的事务,在一个连接中使用T-SQL中的事务
注意:在SQL Server联机丛书中MSDTC是这样定义的:Microsoft 分布式事务处理协调器 (MS DTC)
允许应用程序跨两个或多个 SQL Server 实例扩展事务。此外,该协调器还允许应用程序参与由符合 Open Group DTP XA
标准的事务管理器管理的事务。
在这里我们将用4个小的练习来学习SSIS中的事务,他们分别是:
单个的package:使用DTC建立一个事务
单个的package:使用DTC扩展多个事务
2个package:使用DTC建立一个事务
单个package:使用T-SQL中的事务,就是本地事务
在package中使用该事务需要设置package或者task的属性。如果动手做这些练习,会看到这些属性更加精确的解释,如下图1
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)