Язык

SqlTransaction Класс

Определение

Предоставляет транзакцию Transact-SQL, которая должна быть выполнена над базой данных SQL Server. Этот класс не наследуется.

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
Наследование
SqlTransaction

Примеры

В следующем примере производится создание объектов SqlConnection и SqlTransaction. В нем также показано, как использовать методы BeginTransaction, Commitи Rollback . Откат транзакции выполняется при любой ошибке или при удалении без предварительной фиксации. Try / Catch обработка ошибок используется для обработки ошибок при попытке фиксации или отката транзакции.

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);
                    }
                }
            }
        }
    }
}

Комментарии

Приложение создает объект путем SqlTransaction вызова BeginTransactionSqlConnection объекта . Все последующие операции, связанные с транзакцией (например, фиксация или прерывание транзакции), выполняются с SqlTransaction объектом .

Примечание

Try / Catch Обработка исключений всегда должна использоваться при фиксации или откате SqlTransaction. Оба Commit и Rollback создают , InvalidOperationException если подключение прервано или если транзакция уже откатилась на сервере.

Дополнительные сведения о транзакциях SQL Server см. в разделах Явные транзакции и Кодирование эффективных транзакций.

Свойства

Имя Описание
Connection

Получает объект SqlConnection, связанный с транзакцией, или null, если транзакция уже недействительна.

IsolationLevel

Указывает IsolationLevel для этой транзакции.

Методы

Имя Описание
Commit()

Фиксирует транзакцию базы данных.

Rollback()

Откатывает транзакцию из состояния ожидания.

Rollback(String)

Откатывает транзакцию из состояния ожидания и задает транзакцию или имя пиксели сохранения.

Save(String)

Создает в транзакции пиксель сохранения, которая может быть использована для отката части транзакции, и задает имя пиксели сохранения.

Применяется к