Compartilhar via


Criar e acessar tabelas no TempDB de procedimentos armazenados

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Não há suporte para criar e acessar tabelas no TempDB de procedimentos armazenados nativamente compilados. Em vez disso, use as tabelas com otimização de memória com DURABILITY=SCHEMA_ONLY ou use tipos de tabela e variáveis de tabela.

Para obter mais informações sobre a otimização de memória da tabela temporária e cenários de variável de tabela, confira: Tabela temporária e variável de tabela mais rápidas usando otimização de memória.

O exemplo a seguir mostra como o uso de uma tabela temporária com três colunas (ID, ProductID e Quantidade) pode ser substituído pelo uso de uma variável de tabela @OrderQuantityByProduct do tipo 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  

Confira também

Problemas de migração para procedimentos armazenados compilados nativamente
Construções do Transact-SQL sem suporte pelo OLTP na memória