Уровень изоляции, не работающий в vb.net подключение к базе данных SQL 2008

#sql #vb.net #isolation-level

#sql #vb.net #уровень изоляции

Вопрос:

У меня есть VB.net Приложение CF подключается к серверу SQL 2008. Я пытаюсь реализовать транзакции, но когда я прерываю свой код в начале транзакции, некоторые запросы на чтение не могут быть выполнены в таблице. Например, выбор всех записей из таблицы, где id <> 123, не вернет никаких значений. Но select * from stock вернет все значения, кроме строки, над которой я работаю.

 Dim SQLComm As Data.SqlClient.SqlCommand
Dim myConnString As String = frmConnectionDetails.GetConnectionString
Dim SQLConn As New SqlConnection(myConnString)
Dim SQLTrans As SqlTransaction
SQLConn.Open()
SQLTrans = SQLConn.BeginTransaction(Data.IsolationLevel.ReadCommitted)
SQLComm = New SqlCommand
SQLComm.Connection = SQLConn
SQLComm.Transaction = SQLTrans
AddOrUpdateStock(objStock, SQLConn, SQLComm)
 -Break here
  

Ответ №1:

Как только вы запускаете транзакцию, запись блокируется и к ней нельзя получить доступ до фиксации или отката. Взгляните на этот пример в MSDN.

Кроме того, Data.IsolationLevel применяется на уровне подключения. Если вы хотите выполнять грязные чтения, вы должны использовать ReadUncommitted