SqlConnection.BeginTransaction Metoda

Definicja

Uruchamia transakcję bazy danych.Starts a database transaction.

Przeciążenia

BeginTransaction()

Uruchamia transakcję bazy danych.Starts a database transaction.

BeginTransaction(IsolationLevel)

Uruchamia transakcję bazy danych o określonym poziomie izolacji.Starts a database transaction with the specified isolation level.

BeginTransaction(String)

Uruchamia transakcję bazy danych o określonej nazwie transakcji.Starts a database transaction with the specified transaction name.

BeginTransaction(IsolationLevel, String)

Uruchamia transakcję bazy danych z określonym poziomem izolacji i nazwą transakcji.Starts a database transaction with the specified isolation level and transaction name.

BeginTransaction()

Uruchamia transakcję bazy danych.Starts a database transaction.

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

Zwraca

SqlTransaction

Obiekt reprezentujący nową transakcję.An object representing the new transaction.

Wyjątki

Transakcje równoległe są niedozwolone w przypadku korzystania z wielu aktywnych zestawów wyników (MARS).Parallel transactions are not allowed when using Multiple Active Result Sets (MARS).

Transakcje równoległe nie są obsługiwane.Parallel transactions are not supported.

Przykłady

Poniższy przykład tworzy SqlConnection i SqlTransaction .The following example creates a SqlConnection and a SqlTransaction. Pokazano również, jak używać BeginTransaction metod, a Commit i Rollback .It also demonstrates how to use the BeginTransaction, a Commit, and Rollback methods.

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

Uwagi

To polecenie mapuje na SQL Server implementację BEGIN TRANSACTION.This command maps to the SQL Server implementation of BEGIN TRANSACTION.

Musisz jawnie zatwierdzić lub wycofać transakcję przy użyciu Commit Rollback metody lub.You must explicitly commit or roll back the transaction using the Commit or Rollback method. Aby upewnić się, że Dostawca danych .NET Framework dla modelu zarządzania transakcjami SQL Server działa prawidłowo, należy unikać używania innych modeli zarządzania transakcjami, takich jak dostarczone przez SQL Server.To make sure that the .NET Framework Data Provider for SQL Server transaction management model performs correctly, avoid using other transaction management models, such as the one provided by SQL Server.

Uwaga

Jeśli nie określisz poziomu izolacji, zostanie użyty domyślny poziom izolacji.If you do not specify an isolation level, the default isolation level is used. Aby określić poziom izolacji przy użyciu BeginTransaction metody, Użyj przeciążenia, które przyjmuje iso parametr ( BeginTransaction ).To specify an isolation level with the BeginTransaction method, use the overload that takes the iso parameter (BeginTransaction). Poziom izolacji ustawiony dla transakcji zachowuje się po zakończeniu transakcji i do momentu zamknięcia lub usunięcia połączenia.The isolation level set for a transaction persists after the transaction is completed and until the connection is closed or disposed. Ustawienie poziomu izolacji na migawkę w bazie danych, w której nie włączono poziomu izolacji migawki, nie zgłasza wyjątku.Setting the isolation level to Snapshot in a database where the snapshot isolation level is not enabled does not throw an exception. Transakcja zostanie ukończona przy użyciu domyślnego poziomu izolacji.The transaction will complete using the default isolation level.

Przestroga

Jeśli transakcja jest uruchomiona, a na serwerze wystąpi błąd o poziomie 16 lub wyższym, transakcja nie zostanie wycofana do momentu Read wywołania metody.If a transaction is started and a level 16 or higher error occurs on the server, the transaction will not be rolled back until the Read method is invoked. Nie zgłoszono wyjątku w ExecuteReader.No exception is thrown on ExecuteReader.

Przestroga

Gdy zapytanie zwraca dużą ilość danych i wywołań BeginTransaction , SqlException jest generowane, ponieważ SQL Server nie zezwala na transakcje równoległe podczas korzystania z usługi Mars.When your query returns a large amount of data and calls BeginTransaction, a SqlException is thrown because SQL Server does not allow parallel transactions when using MARS. Aby uniknąć tego problemu, należy zawsze skojarzyć transakcję z poleceniem, połączeniem lub zarówno przed otwarciem dowolnego czytnika.To avoid this problem, always associate a transaction with the command, the connection, or both before any readers are open.

Aby uzyskać więcej informacji na temat SQL Server transakcji, zobacz transakcje (Transact-SQL).For more information on SQL Server transactions, see Transactions (Transact-SQL).

Zobacz też

BeginTransaction(IsolationLevel)

Uruchamia transakcję bazy danych o określonym poziomie izolacji.Starts a database transaction with the specified isolation level.

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

Parametry

iso
IsolationLevel

Poziom izolacji, pod którym należy uruchomić transakcję.The isolation level under which the transaction should run.

Zwraca

SqlTransaction

Obiekt reprezentujący nową transakcję.An object representing the new transaction.

Wyjątki

Transakcje równoległe są niedozwolone w przypadku korzystania z wielu aktywnych zestawów wyników (MARS).Parallel transactions are not allowed when using Multiple Active Result Sets (MARS).

Transakcje równoległe nie są obsługiwane.Parallel transactions are not supported.

Przykłady

Poniższy przykład tworzy SqlConnection i SqlTransaction .The following example creates a SqlConnection and a SqlTransaction. Pokazano również, jak używać BeginTransaction metod, a Commit i Rollback .It also demonstrates how to use the BeginTransaction, a Commit, and Rollback methods.

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

Uwagi

To polecenie mapuje na SQL Server implementację BEGIN TRANSACTION.This command maps to the SQL Server implementation of BEGIN TRANSACTION.

Musisz jawnie zatwierdzić lub wycofać transakcję przy użyciu Commit Rollback metody lub.You must explicitly commit or roll back the transaction using the Commit or Rollback method. Aby upewnić się, że Dostawca danych .NET Framework dla modelu zarządzania transakcjami SQL Server działa prawidłowo, należy unikać używania innych modeli zarządzania transakcjami, takich jak dostarczone przez SQL Server.To make sure that the .NET Framework Data Provider for SQL Server transaction management model performs correctly, avoid using other transaction management models, such as the one provided by SQL Server.

Uwaga

Gdy transakcja zostanie przekazana lub wycofana, poziom izolacji transakcji utrzymuje wszystkie kolejne polecenia, które są w trybie automatycznego zatwierdzania (SQL Server wartość domyślna).After a transaction is committed or rolled back, the isolation level of the transaction persists for all subsequent commands that are in autocommit mode (the SQL Server default). Może to dawać nieoczekiwane wyniki, takie jak poziom izolacji odczytanego odczytu i blokowania innych użytkowników poza wierszem.This can produce unexpected results, such as an isolation level of REPEATABLE READ persisting and locking other users out of a row. Aby zresetować poziom izolacji do wartości domyślnej (READ COMMITTED), wykonaj Transact-SQLTransact-SQL instrukcję SET Transaction level izolacji Read committedd lub Call, SqlConnection.BeginTransaction a następnie bezpośrednio przez SqlTransaction.Commit .To reset the isolation level to the default (READ COMMITTED), execute the Transact-SQLTransact-SQL SET TRANSACTION ISOLATION LEVEL READ COMMITTED statement, or call SqlConnection.BeginTransaction followed immediately by SqlTransaction.Commit. Aby uzyskać więcej informacji na SQL Server poziomów izolacji, zobacz poziomy izolacji transakcji.For more information on SQL Server isolation levels, see Transaction Isolation Levels.

Aby uzyskać więcej informacji na temat SQL Server transakcji, zobacz transakcje (Transact-SQL).For more information on SQL Server transactions, see Transactions (Transact-SQL).

Przestroga

Gdy zapytanie zwraca dużą ilość danych i wywołań BeginTransaction , SqlException jest generowane, ponieważ SQL Server nie zezwala na transakcje równoległe podczas korzystania z usługi Mars.When your query returns a large amount of data and calls BeginTransaction, a SqlException is thrown because SQL Server does not allow parallel transactions when using MARS. Aby uniknąć tego problemu, należy zawsze skojarzyć transakcję z poleceniem, połączeniem lub zarówno przed otwarciem dowolnego czytnika.To avoid this problem, always associate a transaction with the command, the connection, or both before any readers are open.

Zobacz też

BeginTransaction(String)

Uruchamia transakcję bazy danych o określonej nazwie transakcji.Starts a database transaction with the specified transaction name.

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

Parametry

transactionName
String

Nazwa transakcji.The name of the transaction.

Zwraca

SqlTransaction

Obiekt reprezentujący nową transakcję.An object representing the new transaction.

Wyjątki

Transakcje równoległe są niedozwolone w przypadku korzystania z wielu aktywnych zestawów wyników (MARS).Parallel transactions are not allowed when using Multiple Active Result Sets (MARS).

Transakcje równoległe nie są obsługiwane.Parallel transactions are not supported.

Przykłady

Poniższy przykład tworzy SqlConnection i SqlTransaction .The following example creates a SqlConnection and a SqlTransaction. Pokazano również, jak używać BeginTransaction metod, a Commit i Rollback .It also demonstrates how to use the BeginTransaction, a Commit, and Rollback methods.

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

            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

Uwagi

To polecenie mapuje na SQL Server implementację BEGIN TRANSACTION.This command maps to the SQL Server implementation of BEGIN TRANSACTION.

Długość transactionName parametru nie może przekraczać 32 znaków; w przeciwnym razie zostanie zgłoszony wyjątek.The length of the transactionName parameter must not exceed 32 characters; otherwise an exception will be thrown.

Wartość w transactionName parametrze może być używana w późniejszych wywołaniach do Rollback i w savePoint parametrze Save metody.The value in the transactionName parameter can be used in later calls to Rollback and in the savePoint parameter of the Save method.

Musisz jawnie zatwierdzić lub wycofać transakcję przy użyciu Commit Rollback metody lub.You must explicitly commit or roll back the transaction using the Commit or Rollback method. Aby upewnić się, że .NET Framework.NET Framework dostawca danych modelu zarządzania transakcjami SQL Server działa prawidłowo, należy unikać używania innych modeli zarządzania transakcjami, takich jak dostarczone przez SQL Server.To make sure that the .NET Framework.NET Framework Data Provider for SQL Server transaction management model performs correctly, avoid using other transaction management models, such as the one provided by SQL Server.

Aby uzyskać więcej informacji na temat SQL Server transakcji, zobacz transakcje (Transact-SQL).For more information on SQL Server transactions, see Transactions (Transact-SQL).

Przestroga

Gdy zapytanie zwraca dużą ilość danych i wywołań BeginTransaction , SqlException jest generowane, ponieważ SQL Server nie zezwala na transakcje równoległe podczas korzystania z usługi Mars.When your query returns a large amount of data and calls BeginTransaction, a SqlException is thrown because SQL Server does not allow parallel transactions when using MARS. Aby uniknąć tego problemu, należy zawsze skojarzyć transakcję z poleceniem, połączeniem lub zarówno przed otwarciem dowolnego czytnika.To avoid this problem, always associate a transaction with the command, the connection, or both before any readers are open.

Zobacz też

BeginTransaction(IsolationLevel, String)

Uruchamia transakcję bazy danych z określonym poziomem izolacji i nazwą transakcji.Starts a database transaction with the specified isolation level and transaction name.

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

Parametry

iso
IsolationLevel

Poziom izolacji, pod którym należy uruchomić transakcję.The isolation level under which the transaction should run.

transactionName
String

Nazwa transakcji.The name of the transaction.

Zwraca

SqlTransaction

Obiekt reprezentujący nową transakcję.An object representing the new transaction.

Wyjątki

Transakcje równoległe są niedozwolone w przypadku korzystania z wielu aktywnych zestawów wyników (MARS).Parallel transactions are not allowed when using Multiple Active Result Sets (MARS).

Transakcje równoległe nie są obsługiwane.Parallel transactions are not supported.

Przykłady

Poniższy przykład tworzy SqlConnection i SqlTransaction .The following example creates a SqlConnection and a SqlTransaction. Pokazano również, jak używać BeginTransaction metod, a Commit i Rollback .It also demonstrates how to use the BeginTransaction, a Commit, and Rollback methods.

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

Uwagi

To polecenie mapuje na SQL Server implementację BEGIN TRANSACTION.This command maps to the SQL Server implementation of BEGIN TRANSACTION.

Wartość w transactionName parametrze może być używana w późniejszych wywołaniach do Rollback i w savePoint parametrze Save metody.The value in the transactionName parameter can be used in later calls to Rollback and in the savePoint parameter of the Save method.

Musisz jawnie zatwierdzić lub wycofać transakcję przy użyciu Commit Rollback metody lub.You must explicitly commit or roll back the transaction using the Commit or Rollback method. Aby upewnić się, że model zarządzania transakcjami SQL Server działa prawidłowo, należy unikać używania innych modeli zarządzania transakcjami, takich jak dostarczone przez SQL Server.To make sure that the SQL Server transaction management model performs correctly, avoid using other transaction management models, such as the one provided by SQL Server.

Uwaga

Gdy transakcja zostanie przekazana lub wycofana, poziom izolacji transakcji utrzymuje wszystkie kolejne polecenia, które są w trybie automatycznego zatwierdzania (SQL Server wartość domyślna).After a transaction is committed or rolled back, the isolation level of the transaction persists for all subsequent commands that are in autocommit mode (the SQL Server default). Może to dawać nieoczekiwane wyniki, takie jak poziom izolacji odczytanego odczytu i blokowania innych użytkowników poza wierszem.This can produce unexpected results, such as an isolation level of REPEATABLE READ persisting and locking other users out of a row. Aby zresetować poziom izolacji do wartości domyślnej (READ COMMITTED), wykonaj Transact-SQLTransact-SQL instrukcję SET Transaction level izolacji Read committedd lub Call, SqlConnection.BeginTransaction a następnie bezpośrednio przez SqlTransaction.Commit .To reset the isolation level to the default (READ COMMITTED), execute the Transact-SQLTransact-SQL SET TRANSACTION ISOLATION LEVEL READ COMMITTED statement, or call SqlConnection.BeginTransaction followed immediately by SqlTransaction.Commit. Aby uzyskać więcej informacji na SQL Server poziomów izolacji, zobacz poziomy izolacji transakcji.For more information on SQL Server isolation levels, see Transaction Isolation Levels.

Aby uzyskać więcej informacji na temat SQL Server transakcji, zobacz transakcje (Transact-SQL).For more information on SQL Server transactions, see Transactions (Transact-SQL).

Przestroga

Gdy zapytanie zwraca dużą ilość danych i wywołań BeginTransaction , SqlException jest generowane, ponieważ SQL Server nie zezwala na transakcje równoległe podczas korzystania z usługi Mars.When your query returns a large amount of data and calls BeginTransaction, a SqlException is thrown because SQL Server does not allow parallel transactions when using MARS. Aby uniknąć tego problemu, należy zawsze skojarzyć transakcję z poleceniem, połączeniem lub zarówno przed otwarciem dowolnego czytnika.To avoid this problem, always associate a transaction with the command, the connection, or both before any readers are open.

Zobacz też

Dotyczy