4

When I use a memory-optimized table with a stored Procedure that passes the table to an inline table-valued function I get an error:

Msg 596, Level 21, State 1, Line 0
Cannot continue the execution because the session is in the kill state.
Msg 0, Level 20, State 0, Line 0
A severe error occurred on the current command. The results, if any, should be discarded.

I'm using SQL Server 2016 Developer Edition:

Microsoft SQL Server 2016 (SP1-CU3) (KB4019916) - 13.0.4435.0 (X64)
Apr 27 2017 17:36:12
Copyright (c) Microsoft Corporation
Developer Edition (64-bit) on Windows 10 Pro 6.3 (Build 14393: ) (Hypervisor)

I can recreate the error like this:

CREATE TYPE [dbo].[Name] AS TABLE
( [Name] VARCHAR(500) NOT NULL PRIMARY KEY NONCLUSTERED )
WITH (MEMORY_OPTIMIZED = ON)
GO
CREATE TABLE Table1
( ID INT IDENTITY(1,1) PRIMARY KEY NOT NULL
, [Data] nvarchar(max) not null
)
INSERT INTO Table1 ([Data])
VALUES (N'blah1'), (N'blah2'), (N'blah3'), (N'blah4')
GO
CREATE OR ALTER FUNCTION dbo.Test
( @table dbo.[Name] READONLY
) RETURNS TABLE AS RETURN
SELECT *
FROM Table1 t
JOIN @table t2
 ON t2.[Name] = t.[Data]
GO
CREATE OR ALTER PROCEDURE dbo.Test2
 @table dbo.[Name] READONLY
AS
SELECT *
FROM dbo.Test(@table)
GO
DECLARE @memTable dbo.[Name]
INSERT INTO @memTable ([Name])
VALUES ('blah1'), ('blah3')
EXEC dbo.Test2 @memTable

Sometimes this happens and sometimes it doesn't. I have other procedures that work similarly and usually they work fine.

I get this dump in my ERRORLOG (Cut short for brevity):

2017年07月17日 13:14:36.14 spid56 ***Stack Dump being sent to
C:\Program Files\Microsoft SQL
Server\MSSQL13.MSSQLSERVER\MSSQL\LOG\SQLDump0058.txt 2017年07月17日
13:14:36.14 spid56 SqlDumpExceptionHandler: Process 56 generated
fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is
terminating this process. 2017年07月17日 13:14:36.14 spid56 * ******************************************************************************* 2017年07月17日 13:14:36.14 spid56 * 2017年07月17日 13:14:36.14 spid56
* BEGIN STACK DUMP: 2017年07月17日 13:14:36.14 spid56 * 07/17/17 13:14:36 spid 56 2017年07月17日 13:14:36.14 spid56 * 2017年07月17日
13:14:36.14 spid56 * 2017年07月17日 13:14:36.14 spid56 *
Exception Address = 00007FF9DBE76564 Module(sqllang+00000000000C6564)
2017年07月17日 13:14:36.14 spid56 * Exception Code = c0000005
EXCEPTION_ACCESS_VIOLATION 2017年07月17日 13:14:36.14 spid56 *
Access Violation occurred reading address 0000000000000000 2017年07月17日
13:14:36.14 spid56 * Input Buffer 292 bytes - 2017年07月17日
13:14:36.14 spid56 * DECLARE @memTable dbo.[Name]
INSERT INTO @memTable ([Nam 2017年07月17日 13:14:36.14 spid56 * e]) VALUES ('blah1'), ('blah3') EXEC dbo.Test2 @memTable
2017年07月17日 13:14:36.14 spid56 * 2017年07月17日 13:14:36.14 spid56
* 2017年07月17日 13:14:36.14 spid56 * 2017年07月17日 13:14:36.14 spid56 * MODULE BASE END SIZE 2017年07月17日 13:14:36.14 spid56 * sqlservr
00007FF6C6F30000 00007FF6C6F97FFF 00068000 2017年07月17日 13:14:36.14
spid56 * ntdll 00007FF9FE880000 00007FF9FEA50FFF 001d1000 2017年07月17日 13:14:36.14 spid56 * KERNEL32 00007FF9FC7E0000 00007FF9FC88BFFF ...
00019000 2017年07月17日 13:14:36.14 spid56 * xtp_v_8_907150277_184387255245303_1 00007FF9E7590000 00007FF9E75A8FFF
00019000 2017年07月17日 13:14:36.14 spid56 * dbghelp
0000000077350000 00000000774E5FFF 00196000 2017年07月17日 13:14:36.14
spid56 * 2017年07月17日 13:14:36.14 spid56 * P1Home:
FFFFFFFFFFFFFFFE: 2017年07月17日 13:14:36.14 spid56 * P2Home:
0000000000000000: 2017年07月17日 13:14:36.14 spid56 * P3Home:
0000007EF8A7AB80: 00007FF9DD881A70 000001CF0CAA8A70 0000000000000000 000001CF31FE5C08 000001CF33A76040 000001CF125481A0
2017年07月17日 13:14:36.14 spid56 * P4Home: 0000000000000040:
2017年07月17日 13:14:36.14 spid56 * P5Home: 000001CF3FD16080: 00007FF9DB1D8C10 000001CF406CB248 000001CF3FD16CD8 0000000000000003
000001CF40080550 000001CF40080048 2017年07月17日 13:14:36.14 spid56
* P6Home: 00007FF9DB0585C9: EE850FC085ED3345 20356E05F7000382 0E850F0010000000 0268858B48000383 890274C085480000 249C8D4CC68B4818
2017年07月17日 13:14:36.14 spid56 * ContextFlags: 000000000010005F:
2017年07月17日 13:14:36.14 spid56 * MxCsr: 0000000000001FA8:
...
2017年07月17日 13:14:36.14 spid56 * Rcx: 0000000000000000:
2017年07月17日 13:14:36.14 spid56 * Rdx: 0000000000000000:
2017年07月17日 13:14:36.14 spid56 * Rbx: 0000007EF8A7AB80: 00007FF9DD881A70 000001CF0CAA8A70 0000000000000000 000001CF31FE5C08
000001CF33A76040 000001CF125481A0 2017年07月17日 13:14:36.14 spid56
* Rsp: 0000007EF8A7A570: 000001CF1E6CC370 000001CF35D1D450 000001CF35D1D500 000001CF33A76040 00007FF9DB0BCB10 0000000000000000
2017年07月17日 13:14:36.14 spid56 * Rbp: 000001CF35D1D450: 00007FF9DD80C7B0 000001CF00000001 000001CF35D1D500 0000000000000004
000001CF35D1D478 0000000000000000 2017年07月17日 13:14:36.14 spid56
* Rsi: 000001CF35D1D500: 00007FF9DD82C638 0000000000000001 000001CF0A59A060 0000000000000006 0000000000000000 000001CF35D1D5C0
2017年07月17日 13:14:36.14 spid56 * Rdi: 00007FF9DD86FF28: 00007FF9DC8968A0 00007FF9DC47C240 00007FF9DC47C250 00007FF9DC47C260
00007FF9DC62A170 00007FF9DD3D1D40 2017年07月17日 13:14:36.14 spid56
* R8: 0000000000000001: 2017年07月17日 13:14:36.14 spid56 * R9: 0000000000000038: 2017年07月17日 13:14:36.14 spid56 *
R10: 000001CF33A76040: 00007FF9DB1D8718 000001CF00000001 0000000000002000 000001CF0000006E 000001CF0B9E0100 000001CF00000000
2017年07月17日 13:14:36.14 spid56 * R11: 0000007EF8A7A520: 0000000000000000 00007FF9DBE75499 000001CF33A50260 0000000000000000
000001CF33A50260 000001CF0CA8B480 2017年07月17日 13:14:36.14 spid56
* R12: 000001CF20580E30: 00007FF9DD80C7B0 0000000000000001 000001CF20580EE0 0000000000000002 000001CF20580E58 000001CF0CA83910
2017年07月17日 13:14:36.14 spid56 * R13: 000001CF0CA8B480: 00007FF9DD827FA8 000001CF00000001 000001CF0A59A060 000001CF00000008
0000000000000000 000001CF0A59A060 2017年07月17日 13:14:36.14 spid56
* R14: 0000000000000000: 2017年07月17日 13:14:36.14 spid56 * R15: 000001CF35D1D5C0: 00007FF9DD86F068 000001CF0A59A060 000001CF00000000 0000000000000000 000001CF0CA82490 0000000000000000
2017年07月17日 13:14:36.14 spid56 * Rip: 00007FF9DBE76564: 8B486850FF018B48 896052FFC88B4810 8B49000000D02484 718B48000001088F
85F8840FF6854838 84C748FE8B410036 2017年07月17日 13:14:36.14 spid56
* ******************************************************************************* 2017年07月17日 13:14:36.14 spid56 * ------------------------------------------------------------------------------- 2017年07月17日 13:14:36.14 spid56 * Short Stack Dump 2017年07月17日
13:14:36.14 spid56 00007FF9DBE76564
...
2017年07月17日 13:14:36.16 spid56 00007FF9FE8E70D1
Module(ntdll+00000000000670D1) 2017年07月17日 13:14:36.16 spid56
Stack Signature for the dump is 0x00000001FA627823 2017年07月17日
13:14:36.87 spid56 External dump process return code 0x20000001.
External dump process returned no errors. 2017年07月17日 13:14:36.87
Server Error: 17310, Severity: 20, State: 1. 2017年07月17日
13:14:36.87 Server A user request from the session with SPID 56
generated a fatal exception. SQL Server is terminating this session.
Contact Product Support Services with the dump produced in the log
directory.

Paul White
95.3k30 gold badges439 silver badges689 bronze badges
asked Jul 17, 2017 at 20:28
0

1 Answer 1

4

This is a bug: Connect Bug Submission

A workaround is to not pass the memory-optimized table into the stored procedure. You can use it after that though.

Fixed in SQL Server 2017 CU1:

Fix: Error when a stored procedure passes a memory-optimized table to an inline table-valued function in SQL Server 2017

Paul White
95.3k30 gold badges439 silver badges689 bronze badges
answered Jul 19, 2017 at 20:04
0

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.