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
| Name | Description |
|---|---|
| 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üzeyine ve işlem adına sahip 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();
member this.BeginTransaction : unit -> System.Data.SqlClient.SqlTransaction
override 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 , bir Commitve Rollback 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 ile 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ı'nin 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.
Note
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 bir 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 oluşturulur.
Dikkat
Sorgunuz büyük miktarda veri döndürdüğünde ve BeginTransaction çağırdığında, 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. Transactions (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);
member this.BeginTransaction : System.Data.IsolationLevel -> System.Data.SqlClient.SqlTransaction
override 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 , bir Commitve Rollback 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 ile 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ı'nin 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.
Note
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, yineLENEBILIR OKUMAnın 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 sıfırlamak için (READ COMMITTED), Transact-SQL SET TRANSACTION ISOLATION LEVEL READ COMMITTED deyimini yürütür veya SqlConnection.BeginTransaction çağrısı yapın ve hemen ardından SqlTransaction.Commit. SQL Server yalıtım düzeyleri hakkında daha fazla bilgi için bkz. Transaction Yalıtım Düzeyleri.
SQL Server işlemleri hakkında daha fazla bilgi için bkz. Transactions (Transact-SQL).
Dikkat
Sorgunuz büyük miktarda veri döndürdüğünde ve BeginTransaction çağırdığında, 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.
- Transactions (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);
member this.BeginTransaction : string -> System.Data.SqlClient.SqlTransaction
override 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 , bir Commitve Rollback 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 ile 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 parametresinde ve daha sonraki çağrılarda RollbacksavePointSave 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ı'nin 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. Transactions (Transact-SQL).
Dikkat
Sorgunuz büyük miktarda veri döndürdüğünde ve BeginTransaction çağırdığında, 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.
- Transactions (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);
member this.BeginTransaction : System.Data.IsolationLevel * string -> System.Data.SqlClient.SqlTransaction
override 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 , bir Commitve Rollback 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 ile eşlenir.
parametresindeki değer, yönteminin transactionName parametresinde ve daha sonraki çağrılarda RollbacksavePointSave 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 performans göstermesini sağlamak için, SQL Server tarafından sağlanan model gibi diğer işlem yönetimi modellerini kullanmaktan kaçının.
Note
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, yineLENEBILIR OKUMAnın 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 sıfırlamak için (READ COMMITTED), Transact-SQL SET TRANSACTION ISOLATION LEVEL READ COMMITTED deyimini yürütür veya SqlConnection.BeginTransaction çağrısı yapın ve hemen ardından SqlTransaction.Commit. SQL Server yalıtım düzeyleri hakkında daha fazla bilgi için bkz. Transaction Yalıtım Düzeyleri.
SQL Server işlemleri hakkında daha fazla bilgi için bkz. Transactions (Transact-SQL).
Dikkat
Sorgunuz büyük miktarda veri döndürdüğünde ve BeginTransaction çağırdığında, 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.
- Transactions (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ış