Apa perbedaan antara tabel sementara lokal dan global di SQL Server?
sql-server
temp-tables
global-temp-tables
andrew Sullivan
sumber
sumber
Jawaban:
Saya menemukan penjelasan ini cukup jelas (ini salinan murni dari Technet ):
sumber
Variabel tabel (
DECLARE @t TABLE
) hanya terlihat oleh koneksi yang membuatnya, dan dihapus ketika batch atau prosedur tersimpan berakhir.Tabel sementara lokal (
CREATE TABLE #t
) hanya terlihat oleh koneksi yang membuatnya, dan dihapus ketika koneksi ditutup.Tabel sementara global (
CREATE TABLE ##t
) dapat dilihat oleh semua orang, dan dihapus ketika semua koneksi yang merujuknya telah ditutup.Tabel permanen Tempdb (
USE tempdb CREATE TABLE t
) dapat dilihat oleh semua orang, dan dihapus ketika server dihidupkan ulang.sumber
1.) Tabel sementara lokal hanya ada selama durasi koneksi atau, jika didefinisikan di dalam pernyataan gabungan, untuk durasi pernyataan gabungan.
2.) Tabel sementara global tetap ada di database secara permanen, tetapi baris hanya ada dalam koneksi yang diberikan. Ketika koneksi ditutup, data dalam tabel sementara global menghilang. Namun, definisi tabel tetap dengan database untuk akses ketika database dibuka waktu berikutnya.
sumber
Mengutip dari Buku Daring:
Tabel sementara lokal hanya terlihat di sesi saat ini; tabel sementara global terlihat oleh semua sesi.
Tabel sementara secara otomatis dihapus ketika mereka keluar dari ruang lingkup, kecuali secara eksplisit dijatuhkan menggunakan DROP TABLE:
sumber
Tabel sementara lokal : jika Anda membuat tabel sementara lokal dan kemudian membuka koneksi lain dan mencoba kueri, Anda akan mendapatkan kesalahan berikut.
tabel sementara hanya dapat diakses dalam sesi yang membuatnya.
Tabel sementara global : Terkadang, Anda mungkin ingin membuat tabel sementara yang dapat diakses koneksi lain. Dalam hal ini, Anda bisa menggunakan tabel sementara global.
Tabel sementara global hanya dimusnahkan ketika semua sesi yang merujuk padanya ditutup.
sumber
Perlu disebutkan bahwa ada juga: basis data global sementara tabel (saat ini hanya didukung oleh Azure SQL Database)
sumber
Saya tidak melihat jawaban yang menunjukkan kepada pengguna di mana kami dapat menemukan tabel Global Temp. Anda dapat melihat tabel temp Lokal dan Global di lokasi yang sama saat menavigasi dalam SSMS. Cuplikan layar di bawah ini diambil dari tautan ini .
Database -> System Database -> tempdb -> Tabel Sementara
sumber