저장 프로시저에서 TempDB에서 테이블 만들기 및 액세스
적용 대상: SQL Server
Azure SQL Database
Azure SQL Managed Instance
기본적으로 컴파일된 저장 프로시저에서 TempDB의 테이블을 만들고 액세스하는 것은 지원되지 않습니다. 대신 DURABILITY=SCHEMA_ONLY 메모리 최적화된 테이블을 사용하거나 테이블 유형 및 테이블 변수를 사용합니다.
임시 테이블 및 테이블 변수 시나리오의 메모리 최적화에 대한 자세한 내용은 메모리 최적화를 사용하여 임시 테이블 및 테이블 변수 성능 향상을 참조하세요.
다음 예제에서는 type dbo.OrderQuantityByProduct 유형의 테이블 변수 @OrderQuantityByProduct를 사용하여 3개의 열(ID, ProductID, Quantity)이 있는 템플릿 테이블의 사용을 대체하는 방법을 보여 줍니다:
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
참고 항목
네이티브 컴파일된 저장 프로시저의 마이그레이션 문제
메모리 내 OLTP에서 지원되지 않는 Transact-SQL 구문.
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기