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