SqlConnection.BeginTransaction Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bir veritabanı işlemi başlatır.
Aşırı Yüklemeler
BeginTransaction() |
Bir veritabanı işlemi başlatır. |
BeginTransaction(IsolationLevel) |
Belirtilen yalıtım düzeyine sahip bir veritabanı işlemi başlatır. |
BeginTransaction(String) |
Belirtilen işlem adıyla bir veritabanı işlemi başlatır. |
BeginTransaction(IsolationLevel, String) |
Belirtilen yalıtım düzeyi ve işlem adıyla bir veritabanı işlemi başlatır. |
BeginTransaction()
Bir veritabanı işlemi başlatır.
public:
System::Data::SqlClient::SqlTransaction ^ BeginTransaction();
public System.Data.SqlClient.SqlTransaction BeginTransaction ();
override this.BeginTransaction : unit -> System.Data.SqlClient.SqlTransaction
member this.BeginTransaction : unit -> System.Data.SqlClient.SqlTransaction
Public Function BeginTransaction () As SqlTransaction
Döndürülenler
Yeni işlemi temsil eden bir nesne.
Özel durumlar
Birden Çok Etkin Sonuç Kümesi (MARS) kullanılırken paralel işlemlere izin verilmez.
Paralel işlemler desteklenmez.
Örnekler
Aşağıdaki örnek bir SqlConnection ve SqlTransactionoluşturur. Ayrıca , ve CommitRollback yöntemlerinin BeginTransactionnasıl kullanılacağını da gösterir.
private static void ExecuteSqlTransaction(string connectionString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand command = connection.CreateCommand();
SqlTransaction transaction;
// Start a local transaction.
transaction = connection.BeginTransaction();
// Must assign both transaction object and connection
// to Command object for a pending local transaction
command.Connection = connection;
command.Transaction = transaction;
try
{
command.CommandText =
"Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
command.ExecuteNonQuery();
command.CommandText =
"Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
command.ExecuteNonQuery();
// Attempt to commit the transaction.
transaction.Commit();
Console.WriteLine("Both records are written to database.");
}
catch (Exception ex)
{
Console.WriteLine("Commit Exception Type: {0}", ex.GetType());
Console.WriteLine(" Message: {0}", ex.Message);
// Attempt to roll back the transaction.
try
{
transaction.Rollback();
}
catch (Exception ex2)
{
// This catch block will handle any errors that may have occurred
// on the server that would cause the rollback to fail, such as
// a closed connection.
Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType());
Console.WriteLine(" Message: {0}", ex2.Message);
}
}
}
}
Private Sub ExecuteSqlTransaction(ByVal connectionString As String)
Using connection As New SqlConnection(connectionString)
connection.Open()
Dim command As SqlCommand = connection.CreateCommand()
Dim transaction As SqlTransaction
' Start a local transaction
transaction = connection.BeginTransaction()
' Must assign both transaction object and connection
' to Command object for a pending local transaction.
command.Connection = connection
command.Transaction = transaction
Try
command.CommandText = _
"Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"
command.ExecuteNonQuery()
command.CommandText = _
"Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"
command.ExecuteNonQuery()
' Attempt to commit the transaction.
transaction.Commit()
Console.WriteLine("Both records are written to database.")
Catch ex As Exception
Console.WriteLine("Commit Exception Type: {0}", ex.GetType())
Console.WriteLine(" Message: {0}", ex.Message)
' Attempt to roll back the transaction.
Try
transaction.Rollback()
Catch ex2 As Exception
' This catch block will handle any errors that may have occurred
' on the server that would cause the rollback to fail, such as
' a closed connection.
Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType())
Console.WriteLine(" Message: {0}", ex2.Message)
End Try
End Try
End Using
End Sub
Açıklamalar
Bu komut, BEGIN TRANSACTION uygulamasının SQL Server uygulamasıyla eşlenir.
veya Rollback yöntemini kullanarak Commit işlemi açıkça işlemeniz veya geri almanız gerekir. SQL Server işlem yönetimi modeli için .NET Framework Veri Sağlayıcısı'nın doğru performans sergilediğinden emin olmak için, SQL Server tarafından sağlanan model gibi diğer işlem yönetimi modellerini kullanmaktan kaçının.
Not
Bir yalıtım düzeyi belirtmezseniz, varsayılan yalıtım düzeyi kullanılır. yöntemiyle BeginTransaction bir yalıtım düzeyi belirtmek için parametresini (BeginTransaction) alan iso
aşırı yüklemeyi kullanın. İşlem tamamlandıktan sonra ve bağlantı kapatılana veya atılana kadar işlem için ayarlanan yalıtım düzeyi devam eder. Anlık görüntü yalıtım düzeyinin etkinleştirilmediği bir veritabanında yalıtım düzeyini Anlık Görüntü olarak ayarlamak özel durum oluşturmaz. İşlem, varsayılan yalıtım düzeyi kullanılarak tamamlanır.
Dikkat
Bir işlem başlatılırsa ve sunucuda düzey 16 veya üzeri bir hata oluşursa, yöntem çağrılana Read kadar işlem geri alınmaz. ExecuteReader'da özel durum yok.
Dikkat
Sorgunuz büyük miktarda veri döndürdüğünde ve çağırdığındaBeginTransaction
, SQL Server MARS kullanırken paralel işlemlere izin vermediğinden bir SqlException oluşturulur. Bu sorunu önlemek için, okuyucular açık olmadan önce bir işlemi her zaman komutuyla, bağlantıyla veya her ikisiyle ilişkilendirin.
SQL Server işlemleri hakkında daha fazla bilgi için bkz. İşlemler (Transact-SQL).
Ayrıca bkz.
- İşlemler ve Eşzamanlılık
- ADO.NET'da Bir Veri Kaynağına Bağlanma
- SQL Server ve ADO.NET
- ADO.NET’e Genel Bakış
Şunlara uygulanır
BeginTransaction(IsolationLevel)
Belirtilen yalıtım düzeyine sahip bir veritabanı işlemi başlatır.
public:
System::Data::SqlClient::SqlTransaction ^ BeginTransaction(System::Data::IsolationLevel iso);
public System.Data.SqlClient.SqlTransaction BeginTransaction (System.Data.IsolationLevel iso);
override this.BeginTransaction : System.Data.IsolationLevel -> System.Data.SqlClient.SqlTransaction
member this.BeginTransaction : System.Data.IsolationLevel -> System.Data.SqlClient.SqlTransaction
Public Function BeginTransaction (iso As IsolationLevel) As SqlTransaction
Parametreler
- iso
- IsolationLevel
İşlemin altında çalıştırılması gereken yalıtım düzeyi.
Döndürülenler
Yeni işlemi temsil eden bir nesne.
Özel durumlar
Birden Çok Etkin Sonuç Kümesi (MARS) kullanılırken paralel işlemlere izin verilmez.
Paralel işlemler desteklenmez.
Örnekler
Aşağıdaki örnek bir SqlConnection ve SqlTransactionoluşturur. Ayrıca , ve CommitRollback yöntemlerinin BeginTransactionnasıl kullanılacağını da gösterir.
private static void ExecuteSqlTransaction(string connectionString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand command = connection.CreateCommand();
SqlTransaction transaction;
// Start a local transaction.
transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted);
// Must assign both transaction object and connection
// to Command object for a pending local transaction
command.Connection = connection;
command.Transaction = transaction;
try
{
command.CommandText =
"Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
command.ExecuteNonQuery();
command.CommandText =
"Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
command.ExecuteNonQuery();
transaction.Commit();
Console.WriteLine("Both records are written to database.");
}
catch (Exception e)
{
try
{
transaction.Rollback();
}
catch (SqlException ex)
{
if (transaction.Connection != null)
{
Console.WriteLine("An exception of type " + ex.GetType() +
" was encountered while attempting to roll back the transaction.");
}
}
Console.WriteLine("An exception of type " + e.GetType() +
" was encountered while inserting the data.");
Console.WriteLine("Neither record was written to database.");
}
}
}
Private Sub ExecuteSqlTransaction(ByVal connectionString As String)
Using connection As New SqlConnection(connectionString)
connection.Open()
Dim command As SqlCommand = connection.CreateCommand()
Dim transaction As SqlTransaction
' Start a local transaction
transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted)
' Must assign both transaction object and connection
' to Command object for a pending local transaction
command.Connection = connection
command.Transaction = transaction
Try
command.CommandText = _
"Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"
command.ExecuteNonQuery()
command.CommandText = _
"Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"
command.ExecuteNonQuery()
transaction.Commit()
Console.WriteLine("Both records are written to database.")
Catch e As Exception
Try
transaction.Rollback()
Catch ex As SqlException
If Not transaction.Connection Is Nothing Then
Console.WriteLine("An exception of type " & ex.GetType().ToString() & _
" was encountered while attempting to roll back the transaction.")
End If
End Try
Console.WriteLine("An exception of type " & e.GetType().ToString() & _
"was encountered while inserting the data.")
Console.WriteLine("Neither record was written to database.")
End Try
End Using
End Sub
Açıklamalar
Bu komut, BEGIN TRANSACTION uygulamasının SQL Server uygulamasıyla eşlenir.
veya Rollback yöntemini kullanarak Commit işlemi açıkça işlemeniz veya geri almanız gerekir. SQL Server işlem yönetimi modeli için .NET Framework Veri Sağlayıcısı'nın doğru performans sergilediğinden emin olmak için, SQL Server tarafından sağlanan model gibi diğer işlem yönetimi modellerini kullanmaktan kaçının.
Not
bir işlem işlendikten veya geri alındıktan sonra, otomatik komut modunda (varsayılan SQL Server) sonraki tüm komutlar için işlemin yalıtım düzeyi devam eder. Bu, REPEATABLE READ'in yalıtım düzeyi kalıcı hale getirme ve diğer kullanıcıları satır dışında kilitleme gibi beklenmeyen sonuçlara neden olabilir. Yalıtım düzeyini varsayılana (READ COMMITTED) sıfırlamak için Transact-SQL SET TRANSACTION ISOLATION LEVEL READ COMMITTED deyimini yürütür veya hemen ardından SqlTransaction.Commitöğesini çağırınSqlConnection.BeginTransaction. SQL Server yalıtım düzeyleri hakkında daha fazla bilgi için bkz. İşlem Yalıtım Düzeyleri.
SQL Server işlemleri hakkında daha fazla bilgi için bkz. İşlemler (Transact-SQL).
Dikkat
Sorgunuz büyük miktarda veri döndürdüğünde ve çağırdığındaBeginTransaction
, SQL Server MARS kullanırken paralel işlemlere izin vermediğinden bir SqlException oluşturulur. Bu sorunu önlemek için, okuyucular açık olmadan önce bir işlemi her zaman komutuyla, bağlantıyla veya her ikisiyle ilişkilendirin.
Ayrıca bkz.
- İşlemler (ADO.NET)
- Veri Kaynağına Bağlanma (ADO.NET)
- SQL Server için .NET Framework Veri Sağlayıcısı'nı kullanma
- ADO.NET’e Genel Bakış
Şunlara uygulanır
BeginTransaction(String)
Belirtilen işlem adıyla bir veritabanı işlemi başlatır.
public:
System::Data::SqlClient::SqlTransaction ^ BeginTransaction(System::String ^ transactionName);
public System.Data.SqlClient.SqlTransaction BeginTransaction (string transactionName);
override this.BeginTransaction : string -> System.Data.SqlClient.SqlTransaction
member this.BeginTransaction : string -> System.Data.SqlClient.SqlTransaction
Public Function BeginTransaction (transactionName As String) As SqlTransaction
Parametreler
- transactionName
- String
İşlemin adı.
Döndürülenler
Yeni işlemi temsil eden bir nesne.
Özel durumlar
Birden Çok Etkin Sonuç Kümesi (MARS) kullanılırken paralel işlemlere izin verilmez.
Paralel işlemler desteklenmez.
Örnekler
Aşağıdaki örnek bir SqlConnection ve SqlTransactionoluşturur. Ayrıca , ve CommitRollback yöntemlerinin BeginTransactionnasıl kullanılacağını da gösterir.
private static void ExecuteSqlTransaction(string connectionString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand command = connection.CreateCommand();
SqlTransaction transaction;
// Start a local transaction.
transaction = connection.BeginTransaction("SampleTransaction");
// Must assign both transaction object and connection
// to Command object for a pending local transaction
command.Connection = connection;
command.Transaction = transaction;
try
{
command.CommandText =
"Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
command.ExecuteNonQuery();
command.CommandText =
"Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
command.ExecuteNonQuery();
// Attempt to commit the transaction.
transaction.Commit();
Console.WriteLine("Both records are written to database.");
}
catch (Exception ex)
{
Console.WriteLine("Commit Exception Type: {0}", ex.GetType());
Console.WriteLine(" Message: {0}", ex.Message);
// Attempt to roll back the transaction.
try
{
transaction.Rollback("SampleTransaction");
}
catch (Exception ex2)
{
// This catch block will handle any errors that may have occurred
// on the server that would cause the rollback to fail, such as
// a closed connection.
Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType());
Console.WriteLine(" Message: {0}", ex2.Message);
}
}
}
}
Private Sub ExecuteSqlTransaction(ByVal connectionString As String)
Using connection As New SqlConnection(connectionString)
connection.Open()
Dim command As SqlCommand = connection.CreateCommand()
Dim transaction As SqlTransaction
' Start a local transaction
transaction = connection.BeginTransaction("SampleTransaction")
' Must assign both transaction object and connection
' to Command object for a pending local transaction.
command.Connection = connection
command.Transaction = transaction
Try
command.CommandText = _
"Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"
command.ExecuteNonQuery()
command.CommandText = _
"Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"
command.ExecuteNonQuery()
' Attempt to commit the transaction.
transaction.Commit()
Console.WriteLine("Both records are written to database.")
Catch ex As Exception
Console.WriteLine("Exception Type: {0}", ex.GetType())
Console.WriteLine(" Message: {0}", ex.Message)
' Attempt to roll back the transaction.
Try
transaction.Rollback("SampleTransaction")
Catch ex2 As Exception
' This catch block will handle any errors that may have occurred
' on the server that would cause the rollback to fail, such as
' a closed connection.
Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType())
Console.WriteLine(" Message: {0}", ex2.Message)
End Try
End Try
End Using
End Sub
Açıklamalar
Bu komut, BEGIN TRANSACTION uygulamasının SQL Server uygulamasıyla eşlenir.
Parametrenin transactionName
uzunluğu 32 karakteri aşmamalıdır; aksi takdirde bir özel durum oluşturulur.
parametresindeki değer, yönteminin transactionName
parametresine Save yapılan ve sonraki çağrılarda RollbacksavePoint
kullanılabilir.
veya Rollback yöntemini kullanarak Commit işlemi açıkça işlemeniz veya geri almanız gerekir. SQL Server işlem yönetimi modeli için .NET Framework Veri Sağlayıcısı'nın doğru performans sergilediğinden emin olmak için, SQL Server tarafından sağlanan model gibi diğer işlem yönetimi modellerini kullanmaktan kaçının.
SQL Server işlemleri hakkında daha fazla bilgi için bkz. İşlemler (Transact-SQL).
Dikkat
Sorgunuz büyük miktarda veri döndürdüğünde ve çağırdığındaBeginTransaction
, SQL Server MARS kullanırken paralel işlemlere izin vermediğinden bir SqlException oluşturulur. Bu sorunu önlemek için, okuyucular açık olmadan önce bir işlemi her zaman komutuyla, bağlantıyla veya her ikisiyle ilişkilendirin.
Ayrıca bkz.
- İşlemler (ADO.NET)
- Veri Kaynağına Bağlanma (ADO.NET)
- SQL Server için .NET Framework Veri Sağlayıcısı'nı kullanma
- ADO.NET’e Genel Bakış
Şunlara uygulanır
BeginTransaction(IsolationLevel, String)
Belirtilen yalıtım düzeyine ve işlem adına sahip bir veritabanı işlemi başlatır.
public:
System::Data::SqlClient::SqlTransaction ^ BeginTransaction(System::Data::IsolationLevel iso, System::String ^ transactionName);
public System.Data.SqlClient.SqlTransaction BeginTransaction (System.Data.IsolationLevel iso, string transactionName);
override this.BeginTransaction : System.Data.IsolationLevel * string -> System.Data.SqlClient.SqlTransaction
member this.BeginTransaction : System.Data.IsolationLevel * string -> System.Data.SqlClient.SqlTransaction
Public Function BeginTransaction (iso As IsolationLevel, transactionName As String) As SqlTransaction
Parametreler
- iso
- IsolationLevel
İşlemin altında çalıştırılması gereken yalıtım düzeyi.
- transactionName
- String
İşlemin adı.
Döndürülenler
Yeni işlemi temsil eden bir nesne.
Özel durumlar
Birden Çok Etkin Sonuç Kümesi (MARS) kullanılırken paralel işlemlere izin verilmez.
Paralel işlemler desteklenmez.
Örnekler
Aşağıdaki örnek bir SqlConnection ve SqlTransactionoluşturur. Ayrıca , ve CommitRollback yöntemlerinin BeginTransactionnasıl kullanılacağını da gösterir.
private static void ExecuteSqlTransaction(string connectionString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand command = connection.CreateCommand();
SqlTransaction transaction;
// Start a local transaction.
transaction = connection.BeginTransaction(
IsolationLevel.ReadCommitted, "SampleTransaction");
// Must assign both transaction object and connection
// to Command object for a pending local transaction.
command.Connection = connection;
command.Transaction = transaction;
try
{
command.CommandText =
"Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
command.ExecuteNonQuery();
command.CommandText =
"Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
command.ExecuteNonQuery();
transaction.Commit();
Console.WriteLine("Both records are written to database.");
}
catch (Exception e)
{
try
{
transaction.Rollback("SampleTransaction");
}
catch (SqlException ex)
{
if (transaction.Connection != null)
{
Console.WriteLine("An exception of type " + ex.GetType() +
" was encountered while attempting to roll back the transaction.");
}
}
Console.WriteLine("An exception of type " + e.GetType() +
" was encountered while inserting the data.");
Console.WriteLine("Neither record was written to database.");
}
}
}
Private Sub ExecuteSqlTransaction(ByVal connectionString As String)
Using connection As New SqlConnection(connectionString)
connection.Open()
Dim command As SqlCommand = connection.CreateCommand()
Dim transaction As SqlTransaction
' Start a local transaction.
transaction = connection.BeginTransaction( _
IsolationLevel.ReadCommitted, "SampleTransaction")
' Must assign both transaction object and connection
' to Command object for a pending local transaction.
command.Connection = connection
command.Transaction = transaction
Try
command.CommandText = _
"Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"
command.ExecuteNonQuery()
command.CommandText = _
"Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"
command.ExecuteNonQuery()
transaction.Commit()
Console.WriteLine("Both records are written to database.")
Catch e As Exception
Try
transaction.Rollback("SampleTransaction")
Catch ex As SqlException
If Not transaction.Connection Is Nothing Then
Console.WriteLine("An exception of type " & ex.GetType().ToString() & _
" was encountered while attempting to roll back the transaction.")
End If
End Try
Console.WriteLine("An exception of type " & e.GetType().ToString() & _
"was encountered while inserting the data.")
Console.WriteLine("Neither record was written to database.")
End Try
End Using
End Sub
Açıklamalar
Bu komut, BEGIN TRANSACTION uygulamasının SQL Server uygulamasıyla eşlenir.
parametresindeki değer, yönteminin transactionName
parametresine Save yapılan ve sonraki çağrılarda RollbacksavePoint
kullanılabilir.
veya Rollback yöntemini kullanarak Commit işlemi açıkça işlemeniz veya geri almanız gerekir. SQL Server işlem yönetimi modelinin doğru şekilde gerçekleştirdiğinden emin olmak için, SQL Server tarafından sağlanan model gibi diğer işlem yönetimi modellerini kullanmaktan kaçının.
Not
bir işlem işlendikten veya geri alındıktan sonra, otomatik komut modunda (varsayılan SQL Server) sonraki tüm komutlar için işlemin yalıtım düzeyi devam eder. Bu, REPEATABLE READ'in yalıtım düzeyi kalıcı hale getirme ve diğer kullanıcıları satır dışında kilitleme gibi beklenmeyen sonuçlara neden olabilir. Yalıtım düzeyini varsayılana (READ COMMITTED) sıfırlamak için Transact-SQL SET TRANSACTION ISOLATION LEVEL READ COMMITTED deyimini yürütür veya hemen ardından SqlTransaction.Commitöğesini çağırınSqlConnection.BeginTransaction. SQL Server yalıtım düzeyleri hakkında daha fazla bilgi için bkz. İşlem Yalıtım Düzeyleri.
SQL Server işlemleri hakkında daha fazla bilgi için bkz. İşlemler (Transact-SQL).
Dikkat
Sorgunuz büyük miktarda veri döndürdüğünde ve çağırdığındaBeginTransaction
, SQL Server MARS kullanırken paralel işlemlere izin vermediğinden bir SqlException oluşturulur. Bu sorunu önlemek için, okuyucular açık olmadan önce bir işlemi her zaman komutuyla, bağlantıyla veya her ikisiyle ilişkilendirin.
Ayrıca bkz.
- İşlemler (ADO.NET)
- Veri Kaynağına Bağlanma (ADO.NET)
- SQL Server için .NET Framework Veri Sağlayıcısını Kullanma
- ADO.NET’e Genel Bakış