Saya punya pertanyaan tentang sepotong dokumentasi tentang Tabel Temp yang baru-baru ini saya baca di TechNet . Paragraf keempat bagian Tabel Sementara pada halaman itu berbunyi sebagai berikut:
Jika tabel sementara dibuat dengan batasan bernama dan tabel sementara dibuat dalam lingkup transaksi yang ditentukan pengguna, hanya satu pengguna pada satu waktu yang dapat menjalankan pernyataan yang membuat tabel temp. Misalnya, jika prosedur tersimpan membuat tabel sementara dengan batasan kunci primer bernama, prosedur tersimpan tidak dapat dijalankan secara bersamaan oleh beberapa pengguna.
Saya bekerja di lingkungan di mana kami menggunakan secara signifikan beberapa prosedur tersimpan yang menggunakan tabel temp diindeks, dan kami tidak pernah mengalami masalah di mana pengguna harus menunggu satu eksekusi untuk menyelesaikan sebelum yang berikutnya dimulai. Saya harap itu akan terus menjadi masalah, tetapi saya khawatir hal itu bisa menjadi masalah jika peringatan ini tidak dipahami dengan baik.
Secara khusus, saya tidak jelas tentang hal-hal berikut:
- Apakah ini hanya berlaku untuk tabel temp global, atau yang temporer juga? Tampaknya aneh bahwa tabel yang tidak terlihat di luar sesi (seperti dalam kasus yang terakhir) akan mencegah sesi lain dari eksekusi secara bersamaan.
- Apa yang memenuhi syarat sebagai "batasan nama"? Tidak semua kendala memiliki nama (bahkan jika itu dihasilkan oleh sistem)? Apakah ini merujuk pada kendala dengan alias yang ditentukan pengguna? Ini sepertinya ungkapan yang buruk bagiku.
- Apakah "banyak pengguna" sebenarnya berarti beberapa sesi? Prosedur ini dipanggil melalui aplikasi kami menggunakan akun layanan tunggal, sehingga 99,9% panggilan ke skrip kami dilakukan ke DB oleh akun tunggal itu (dan saya tidak peduli tentang panggilan sesekali yang mungkin dilakukan admin di backend). Jika akun layanan dapat menjalankan sproc dalam beberapa sesi secara bersamaan, maka masalah ini diperdebatkan untuk tujuan saya.