Foxtable(狐表)用户栏目专家坐堂 → BeginTransaction怎么设置隔离等级?


  共有2888人关注过本帖树形打印复制链接

主题:BeginTransaction怎么设置隔离等级?

帅哥哟,离线,有人找我吗?
luodang2050
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:586 积分:5685 威望:0 精华:0 注册:2014/5/21 10:30:00
BeginTransaction怎么设置隔离等级?  发帖心情 Post By:2018/8/9 14:53:00 [只看该作者]

如题,sqlserver事务,希望参数更改为:SET TRANSACTION ISOLATION LEVEL SNAPSHOT 
BeginTransaction时,应该怎么设置?

以下为sql语言,SET transaction isolation level snapshot语句必须写在BEGIN TRAN之前
SET transaction isolation level snapshot;
BEGIN TRAN;
SELECT * F ROM test;
COMMIT TRAN;
[此贴子已经被作者于2018/8/9 15:20:03编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/8/9 16:04:00 [只看该作者]

如果自己写事务,参考

 

Dim str_oleConn As String = Connections("test").ConnectionString
Dim ole_conn As New System.Data.OleDb.OleDbConnection(str_oleConn)
ole_conn.Open()
Dim command As System.Data.OleDb.OleDbCommand = ole_conn.CreateCommand()
Dim transaction As System.Data.OleDb.OleDbTransaction
transaction = ole_conn.BeginTransaction(System.Data.IsolationLevel.ReadCommitted)
command.Connection = ole_conn
command.Transaction = transaction
Try
    command.CommandText = "update kkk set 第一列='123'"
    command.ExecuteNonQuery()
   
    msgbox("成功")
    transaction.Commit()
Catch ex As Exception
    MessageBox.Show(ex.Message)
    transaction.Rollback()
Finally
    ole_conn.Close()
End Try


 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/8/9 16:06:00 [只看该作者]

如果是设置,你可以用sqlcommand设置,如

 

cmd.CommandText = "SET transaction isolation level snapshot"

 

http://www.foxtable.com/webhelp/scr/0696.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/8/9 16:09:00 [只看该作者]

sqlconnection改成这样

 

Dim str_oleConn As String = "server=voyo;uid=sa;pwd=hailun.;database=test"
Dim ole_conn As New System.Data.SqlClient.sqlConnection(str_oleConn)
ole_conn.Open()
Dim command  = ole_conn.CreateCommand()
Dim transaction As System.Data.SqlClient.sqlTransaction
transaction = ole_conn.BeginTransaction(System.Data.IsolationLevel.SNAPSHOT)
command.Connection = ole_conn
command.Transaction = transaction
Try
    command.CommandText = "update kkk set 第一列='123'"
    command.ExecuteNonQuery()
   
    msgbox("成功")
    transaction.Commit()
Catch ex As Exception
    MessageBox.Show(ex.Message)
    transaction.Rollback()
Finally
    ole_conn.Close()
End Try


 


 回到顶部
帅哥哟,离线,有人找我吗?
luodang2050
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:586 积分:5685 威望:0 精华:0 注册:2014/5/21 10:30:00
  发帖心情 Post By:2018/8/9 16:51:00 [只看该作者]

Connections(“test”),关于这个FT建立的链接,每次执行cmd命令,其会话是否都属于同一个的?
经测试,设过一次事务隔离等级为快照方式后,一段时间内多次运行,其事务隔离等级不变,过了几min会自动变回原来默认的等级。
故推断会话是短时间内持续保存的,过一段时间会自动断开重连会话,请问该推断正确么?
[此贴子已经被作者于2018/8/9 16:57:31编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/8/9 17:10:00 [只看该作者]

如果想保险的话,建议用4楼方式。

 回到顶部
帅哥哟,离线,有人找我吗?
luodang2050
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:586 积分:5685 威望:0 精华:0 注册:2014/5/21 10:30:00
  发帖心情 Post By:2018/8/9 17:13:00 [只看该作者]

好的,FT定制的方式,部分封装运行机制不是特别明确,还是直接4楼方法保险,并发问题真够麻烦的,偶尔出现多人冲突bug,打算代码重新梳理一遍,谢谢了

 回到顶部
帅哥哟,离线,有人找我吗?
Grandraw
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:92 积分:1027 威望:0 精华:0 注册:2018/5/31 19:09:00
  发帖心情 Post By:2020/1/23 10:32:00 [只看该作者]

Mark

 回到顶部
帅哥哟,离线,有人找我吗?
wei0769
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1822 积分:19501 威望:0 精华:0 注册:2013/4/10 14:38:00
  发帖心情 Post By:2020/1/23 12:52:00 [只看该作者]

放假了,明年再问


 回到顶部