Aracılığıyla paylaş


SqlConnection.BeginTransaction Yöntem

Tanım

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.

Ş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.

Ş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.

Ş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.

Şunlara uygulanır