以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  BeginTransaction怎么设置隔离等级?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=123178)

--  作者:luodang2050
--  发布时间:2018/8/9 14:53:00
--  BeginTransaction怎么设置隔离等级?
如题,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编辑过]

--  作者:有点甜
--  发布时间: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


 


--  作者:有点甜
--  发布时间:2018/8/9 16:06:00
--  

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

 

cmd.CommandText = "SET transaction isolation level snapshot"

 

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

 


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

--  作者:有点甜
--  发布时间:2018/8/9 17:10:00
--  
如果想保险的话,建议用4楼方式。
--  作者:luodang2050
--  发布时间:2018/8/9 17:13:00
--  
好的,FT定制的方式,部分封装运行机制不是特别明确,还是直接4楼方法保险,并发问题真够麻烦的,偶尔出现多人冲突bug,打算代码重新梳理一遍,谢谢了
--  作者:Grandraw
--  发布时间:2020/1/23 10:32:00
--  
Mark
--  作者:wei0769
--  发布时间:2020/1/23 12:52:00
--  

放假了,明年再问