Udostępnij za pośrednictwem


SqlTransaction Klasa

Definicja

Reprezentuje transakcję języka Transact-SQL, która ma zostać wykonana w bazie danych SQL Server. Klasa ta nie może być dziedziczona.

public ref class SqlTransaction sealed : System::Data::Common::DbTransaction
public sealed class SqlTransaction : System.Data.Common.DbTransaction
type SqlTransaction = class
    inherit DbTransaction
Public NotInheritable Class SqlTransaction
Inherits DbTransaction
Dziedziczenie
SqlTransaction

Przykłady

Poniższy przykład tworzy element SqlConnection i .SqlTransaction Pokazuje również, jak używać BeginTransactionmetod , Commiti Rollback . Transakcja zostanie wycofana z dowolnego błędu lub zostanie usunięta bez uprzedniego zatwierdzenia. Try/Catch Obsługa błędów służy do obsługi błędów podczas próby zatwierdzenia lub wycofania transakcji.

using Microsoft.Data.SqlClient;

namespace Transaction1CS
{
    class Program
    {
        static void Main()
        {
            string connectionString =
                "Persist Security Info=False;Integrated Security=SSPI;database=Northwind;server=(local)";
            ExecuteSqlTransaction(connectionString);
            Console.ReadLine();
        }
        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);
                    }
                }
            }
        }
    }
}

Uwagi

Aplikacja tworzy SqlTransaction obiekt przez wywołanie BeginTransactionSqlConnection obiektu. Wszystkie kolejne operacje skojarzone z transakcją (na przykład zatwierdzenie lub przerwanie transakcji) są wykonywane na SqlTransaction obiekcie.

Uwaga

Try/Catch obsługa wyjątków powinna być zawsze używana podczas zatwierdzania lub wycofywania SqlTransaction. Zarówno Commit , jak i Rollback wygenerować InvalidOperationException , jeśli połączenie zostało zakończone lub czy transakcja została już wycofana na serwerze.

Aby uzyskać więcej informacji na temat transakcji SQL Server, zobacz Jawne transakcje i Kodowanie wydajnych transakcji.

Właściwości

Connection

SqlConnection Pobiera obiekt skojarzony z transakcją lub null jeśli transakcja nie jest już prawidłowa.

IsolationLevel

Określa IsolationLevel dla tej transakcji.

Metody

Commit()

Zatwierdza transakcję bazy danych.

Rollback()

Wycofywanie transakcji ze stanu oczekiwania.

Rollback(String)

Powoduje wycofanie transakcji ze stanu oczekiwania i określa nazwę transakcji lub punktu zapisywania.

Save(String)

Tworzy punkt zapisywania w transakcji, który może służyć do wycofywania części transakcji i określa nazwę punktu zapisywania.

Dotyczy