SqlTransaction.Rollback Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengembalikan transaksi dari status tertunda.
Overload
Rollback() |
Mengembalikan transaksi dari status tertunda. |
Rollback(String) |
Mengembalikan transaksi dari status tertunda, dan menentukan nama transaksi atau titik simpan. |
Rollback()
Mengembalikan transaksi dari status tertunda.
public:
override void Rollback();
public:
virtual void Rollback();
public override void Rollback ();
public void Rollback ();
override this.Rollback : unit -> unit
abstract member Rollback : unit -> unit
override this.Rollback : unit -> unit
Public Overrides Sub Rollback ()
Public Sub Rollback ()
Penerapan
Pengecualian
Terjadi kesalahan saat mencoba melakukan transaksi.
Contoh
Contoh berikut membuat SqlConnection dan SqlTransaction. Ini juga menunjukkan cara menggunakan BeginTransactionmetode , , Commitdan Rollback . Transaksi digulung balik pada kesalahan apa pun.
Try
/
Catch
penanganan kesalahan digunakan untuk menangani kesalahan apa pun saat mencoba menerapkan atau mengembalikan transaksi.
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
Keterangan
Metode Rollback ini setara dengan pernyataan TRANSAKSI ROLLBACK Transact-SQL. Untuk informasi selengkapnya, lihat ROLLBACK TRANSACTION (Transact-SQL) .
Transaksi hanya dapat digulung balik dari status tertunda (setelah BeginTransaction dipanggil, tetapi sebelumnya Commit dipanggil). Transaksi digulung balik jika dibuang sebelum Commit
atau Rollback
dipanggil.
Catatan
Try
/
Catch
penanganan pengecualian harus selalu digunakan saat mengembalikan transaksi.
Rollback
menghasilkan InvalidOperationException jika koneksi dihentikan atau jika transaksi telah digulung balik di server.
Untuk informasi selengkapnya tentang transaksi SQL Server, lihat Transaksi (Transact-SQL).
Lihat juga
Berlaku untuk
Rollback(String)
Mengembalikan transaksi dari status tertunda, dan menentukan nama transaksi atau titik simpan.
public:
void Rollback(System::String ^ transactionName);
public void Rollback (string transactionName);
override this.Rollback : string -> unit
member this.Rollback : string -> unit
Public Sub Rollback (transactionName As String)
Parameter
- transactionName
- String
Nama transaksi yang akan digulung balik, atau titik penyimpanan yang akan digulung balik.
Pengecualian
Tidak ada nama transaksi yang ditentukan.
Contoh
Contoh berikut membuat SqlConnection dan SqlTransaction. Ini juga menunjukkan cara menggunakan BeginTransactionmetode , , Commitdan Rollback . Transaksi digulung balik pada kesalahan apa pun.
Try
/
Catch
penanganan kesalahan digunakan untuk menangani kesalahan apa pun saat mencoba menerapkan atau mengembalikan transaksi.
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
Keterangan
Metode Rollback ini setara dengan pernyataan TRANSAKSI ROLLBACK Transact-SQL. Untuk informasi selengkapnya, lihat Transaksi (Transact-SQL).
Transaksi hanya dapat digulung balik dari status tertunda (setelah BeginTransaction dipanggil, tetapi sebelumnya Commit dipanggil). Transaksi digulung balik jika dibuang sebelum Commit
atau Rollback
dipanggil.
Catatan
Try
/
Catch
penanganan pengecualian harus selalu digunakan saat mengembalikan transaksi.
Rollback
menghasilkan InvalidOperationException jika koneksi dihentikan atau jika transaksi telah digulung balik di server.
Untuk informasi selengkapnya tentang transaksi SQL Server, lihat Transaksi (Transact-SQL).