Pertanyaan saya sederhana: Apa perbedaan / persamaan / kardinalitas antara
- Transaksi
- Batch
- Koneksi dan
- Pernyataan
dalam SQL Server?
Sejauh yang saya mengerti koneksi adalah saluran komunikasi tunggal antara contoh SQL Server dan klien di mana koleksi pernyataan dikelompokkan sebagai batch dijalankan. Batch dipetakan secara implisit atau eksplisit ke satu atau beberapa transaksi. Apakah ini benar?
Transaksi dan Batch adalah dua konsep independen. Keduanya dapat digunakan dalam konfigurasi satu ke banyak.
Blok transaksi adalah "unit kerja" tunggal, sebuah konsep yang mengikat sql harus sepenuhnya berfungsi atau tidak berfungsi sama sekali. Misalnya, jika Anda memperbarui dua tabel yang ditautkan satu sama lain; keduanya harus berhasil agar perubahan data dilakukan. [ https://msdn.microsoft.com/en-us/library/ms174377.aspx]
Batch adalah konsep Microsoft. Dengan alat yang dibuat oleh Microsoft seperti sqlcmd dan osql, batch hanya memastikan satu rencana eksekusi. Misalnya, jika Anda membuat variabel dan menggunakannya di luar bets, alat akan melempar kesalahan. [ https://msdn.microsoft.com/en-us/library/ms188037.aspx]
Jadi, Anda dapat memiliki beberapa kumpulan yang memperbarui beberapa tabel di dalam satu blok transaksi. Sejauh mereka tidak melanggar rencana pelaksanaan batch individu itu.
Selain itu, dalam batch, Anda dapat memiliki beberapa blok transaksi, memastikan integritas data antara entitas basis data seperti tabel.
Koneksi hanyalah jabat tangan komunikasi yang menyetujui seseorang untuk menjalankan kueri di server.
Pernyataan adalah baris individual yang membentuk kueri. GO (T-Sql batch separator) dan BEGIN TRANSACTION (ANSI SQL untuk memulai blok transaksi baru) keduanya merupakan pernyataan.
sumber
Batch dan transaksi ada di level yang sama. Batch adalah kumpulan perintah SQL yang tidak terkait. Suatu transaksi adalah kumpulan dari perintah SQL yang beroperasi (sejauh semua pengguna lain dari basis data bersangkutan) sebagai satu pernyataan.
sumber