Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 merge + output + window func = серьезная ошибка  [new]
dies irae
Member

Откуда:
Сообщений: 78
Всем привет

Microsoft SQL Server 2012 - 11.0.5532.0 (X64)
Jul 14 2014 15:00:27
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
(на 2008-м то же самое)

declare @m table (i int primary key, x int)

declare @merge_result table(action nvarchar(10));

insert @m(i)
	values (1), (2), (3);


with m as (
	select *
		,sum(x) over (partition by i ) as s
	from @m
)
merge m using @m as src on m.i = src.i
	when not matched then
		insert(i,x)
		values(src.i,src.x)
	output $action into @merge_result
	;

проверял на двух серверах, 2012 и 2008. валится при компиляции запроса и обрывает соединение:
 Msg 0, Level 11, State 0, Line 2
При выполнении текущей команды возникла серьезная ошибка.. При наличии результатов они должны быть аннулированы.


никто не сталкивался?

воспроизводится у кого? если да, скиньте, плиз, текст запроса на инглише, может удастся нагуглить, под рукой нет импортного сервака
20 июн 17, 14:59    [20577700]     Ответить | Цитировать Сообщить модератору
 Re: merge + output + window func = серьезная ошибка  [new]
Rankatan
Member

Откуда:
Сообщений: 250
Msg 0, Level 11, State 0, Line 0
A severe error occurred on the current command. The results, if any, should be discarded.
Msg 0, Level 20, State 0, Line 0
A severe error occurred on the current command. The results, if any, should be discarded.
20 июн 17, 15:05    [20577724]     Ответить | Цитировать Сообщить модератору
 Re: merge + output + window func = серьезная ошибка  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
dies irae, а вы зачем так делаете?

В серверном логе:

автор
A user request from the session with SPID 276 generated a fatal exception. SQL Server is terminating this session. Contact Product Support Services with the dump produced in the log directory.


Ищите дамп и отправляйте в Product Support.
20 июн 17, 15:19    [20577797]     Ответить | Цитировать Сообщить модератору
 Re: merge + output + window func = серьезная ошибка  [new]
dies irae
Member

Откуда:
Сообщений: 78
Minamoto
dies irae, а вы зачем так делаете?

задачи ставит нам жизнь такие
выше приведён всего лишь репро, реальность ещё страшнее

и я не один такой, уже пнули
https://connect.microsoft.com/SQLServer/feedback/details/752088/sev20-from-merge-with-row-number-with-cte-and-output-clause

интересно, в 2014-м или 2016-м поправили?
20 июн 17, 15:35    [20577850]     Ответить | Цитировать Сообщить модератору
 Re: merge + output + window func = серьезная ошибка  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
dies irae,

в 2016 нормально

автор
задачи ставит нам жизнь такие

вот и выросло поколение без cte жить не могут
20 июн 17, 15:37    [20577855]     Ответить | Цитировать Сообщить модератору
 Re: merge + output + window func = серьезная ошибка  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
при этом, каким здравым смыслом получателем вы ставите cte а источником оригинал... тут действительно всё жуть как страшно
20 июн 17, 15:46    [20577893]     Ответить | Цитировать Сообщить модератору
 Re: merge + output + window func = серьезная ошибка  [new]
dies irae
Member

Откуда:
Сообщений: 78
TaPaK
при этом, каким здравым смыслом получателем вы ставите cte а источником оригинал... тут действительно всё жуть как страшно


это не важно, cte может на другой таблице базироваться.
а есть у кого-то sql 2012 SP3? проверьте, плиз...
20 июн 17, 15:48    [20577904]     Ответить | Цитировать Сообщить модератору
 Re: merge + output + window func = серьезная ошибка  [new]
dies irae
Member

Откуда:
Сообщений: 78
репро можно упростить


declare @m table (i int , x int);

with m as (
	select *
		,1 as s
	from @m
)
merge m using @m as src on m.i = src.i
	when not matched then
		insert(i,x)
		values(src.i,src.x)
	output $action;
20 июн 17, 15:52    [20577921]     Ответить | Цитировать Сообщить модератору
 Re: merge + output + window func = серьезная ошибка  [new]
лолл
Member

Откуда:
Сообщений: 450
dies irae,

А зачем в данном случае вообще CTE? Если без него, то работает?
20 июн 17, 16:01    [20577959]     Ответить | Цитировать Сообщить модератору
 Re: merge + output + window func = серьезная ошибка  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
dies irae,
declare @m table (i int , x int);

with m as (
	select *
		,1 as s
	from @m
)
merge @m as [Target] using @m as [Source] on [Target].i = [Source].i
	when not matched then
		insert(i,x)
		values([Source].i,[Source].x)
	output $action;
20 июн 17, 16:03    [20577974]     Ответить | Цитировать Сообщить модератору
 Re: merge + output + window func = серьезная ошибка  [new]
dies irae
Member

Откуда:
Сообщений: 78
лолл,

данный случай - это упрощённый пример. без него да, работает.
Ошибка валится при наличии трёх составляющих: merge, вычисляемый столбец в CTE и output
20 июн 17, 16:03    [20577976]     Ответить | Цитировать Сообщить модератору
 Re: merge + output + window func = серьезная ошибка  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
dies irae
TaPaK
при этом, каким здравым смыслом получателем вы ставите cte а источником оригинал... тут действительно всё жуть как страшно


это не важно, cte может на другой таблице базироваться.
а есть у кого-то sql 2012 SP3? проверьте, плиз...

ошибка и на.
Microsoft SQL Server 2012 (SP3) (KB3072779) - 11.0.6020.0 (X64)
Oct 20 2015 15:36:27
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)
2014 у меня нет
20 июн 17, 16:04    [20577978]     Ответить | Цитировать Сообщить модератору
 Re: merge + output + window func = серьезная ошибка  [new]
dies irae
Member

Откуда:
Сообщений: 78
TaPaK
ошибка и на.
Microsoft SQL Server 2012 (SP3) (KB3072779) - 11.0.6020.0 (X64)
Oct 20 2015 15:36:27
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)
2014 у меня нет

сенкс
20 июн 17, 16:08    [20578000]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить