Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Memahami batas waktu transactionscope

Coba lihat seperti ini:

Panjang transaksi hanya ditentukan saat Anda memanggil trans.Complete() atau keluar dari cakupan transaksi. Ambil kode berikut:

using (var trans= new TransactionScope())
{
Threading.Sleep(99999);
trans.Complete()
}

Tidak ada cara untuk membuang pengecualian batas waktu saat berada di dalam rutinitas tidur dan tidak masuk akal jika itu terjadi. Jadi menggunakan batas waktu transaksi (setidaknya dengan cara ini) hanya dapat menjamin bahwa jika transaksi memakan waktu lebih lama dari batas waktu Anda, transaksi tidak akan dilakukan.

Jika Anda hanya menjalankan satu kueri (yang saya tidak tahu untuk apa Anda menggunakan transaksi) maka Anda dapat mengatur batas waktu kueri/perintah (atau apa pun namanya). IIRC, kueri Anda akan segera kembali setelah batas waktu habis.

Cara lain adalah dengan menyetel batas waktu permintaan layanan web Anda dan anggap saja layanan web terlalu lama untuk merespons karena apa pun yang ada di dalam transaksi Anda.

EDIT:Anda dapat mencoba:

  • Memunculkan transaksi Anda di utas yang berbeda dan kemudian menunggu sampai selesai (menggunakan Thread.Join(timeout)) di utas utama Anda (yang digunakan oleh panggilan layanan web). Jadi jika tidak berhenti sebelum batas waktu yang Anda tentukan maka Anda bisa berhenti menunggu dan mengembalikan kesalahan batas waktu (jangan lupa untuk memberi sinyal ke thread lain untuk membatalkan transaksi).
  • Dengan asumsi Anda hanya melakukan kueri SQL di dalam transaksi tersebut, Anda dapat menggunakan kata kunci "BEGIN TRANSACTION" untuk menentukan transaksi dalam skrip sql (retas memang). Kemudian Anda bisa menentukan batas waktu perintah dan menjalankan semua ini dalam satu baris kode. Tapi kemudian ini mengharuskan Anda untuk memindahkan semua yang Anda lakukan di dalam transaksi ke dalam skrip sql yang mungkin atau tidak mungkin untuk Anda... dan itu tidak bersih.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menghapus nol di depan dari bidang dalam pernyataan SQL

  2. Cara mengubah data dari baris berdasarkan kolom tertentu ke struktur data lain

  3. Cara membagi nilai yang dipisahkan koma ke kolom

  4. Masukkan Perbarui proc yang disimpan di SQL Server

  5. gabungkan dua bilangan bulat dan hasilkan sebagai string dalam SQL