Membuat dan Mengakses Tabel di TempDB dari Prosedur Tersimpan
Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance
Membuat dan mengakses tabel di TempDB dari prosedur tersimpan yang dikompilasi secara asli tidak didukung. Sebagai gantinya, gunakan tabel yang dioptimalkan memori dengan DURABILITY=SCHEMA_ONLY atau gunakan jenis tabel dan variabel tabel.
Untuk informasi selengkapnya tentang pengoptimalan memori skenario tabel sementara dan variabel tabel, lihat: Tabel sementara dan variabel tabel yang lebih cepat dengan menggunakan pengoptimalan memori.
Contoh berikut menunjukkan bagaimana penggunaan tabel sementara dengan tiga kolom (ID, ProductID, Kuantitas) dapat diganti menggunakan variabel tabel @OrderQuantityByProduct jenis dbo. OrderQuantityByProduct:
CREATE TYPE dbo.OrderQuantityByProduct
AS TABLE
(id INT NOT NULL PRIMARY KEY NONCLUSTERED HASH WITH (BUCKET_COUNT=100000),
ProductID INT NOT NULL,
Quantity INT NOT NULL) WITH (MEMORY_OPTIMIZED=ON)
GO
CREATE PROCEDURE dbo.usp_OrderQuantityByProduct
WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER
AS BEGIN ATOMIC WITH
(
TRANSACTION ISOLATION LEVEL = SNAPSHOT,
LANGUAGE = N'ENGLISH'
)
-- declare table variables for the list of orders
DECLARE @OrderQuantityByProduct dbo.OrderQuantityByProduct
-- populate input
INSERT @OrderQuantityByProduct SELECT ProductID, Quantity FROM dbo.[Order Details]
end
Lihat Juga
Masalah Migrasi untuk Prosedur Tersimpan yang Dikompilasi Secara Asli
Konstruksi Transact-SQL Tidak Didukung oleh OLTP Dalam Memori
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk