Eu tenho a seguinte coluna virtual gerada a partir de um agregado em uma partição classificada,
MIN(picture_id) OVER ( PARTITION BY [360_set] ORDER BY picture_id ASC )
No entanto, quando executo isso, recebo o seguinte.
Msg 11305, Level 15, State 10, Line 12
The Parallel Data Warehouse (PDW) features are not enabled.
É aqui que fica interessante, porém, sem uma ordem de classificação na partição, funciona:
MIN(picture_id) OVER ( PARTITION BY [360_set] )
E, além disso, ROW_NUMBER()
uma função de janela (não uma função de agregação) funciona com uma ordem explícita na partição.
ROW_NUMBER() OVER ( PARTITION BY [360_set] ORDER BY picture_id ASC )
Como é que a declaração desejada não funciona? Onde isso está documentado? As informações da versão foram solicitadas, isso é o que eu em Ajuda → Sobre.
Microsoft SQL Server Management Studio 10.0.5512.0
Microsoft Analysis Services Client Tools 10.0.5500.0
Microsoft Data Access Components (MDAC) 6.1.7601.17514
Microsoft MSXML 3.0 6.0
Microsoft Internet Explorer 9.10.9200.16635
Microsoft .NET Framework 2.0.50727.5472
Operating System 6.1.7601
O resultado de SELECT @@VERSION
éMicrosoft SQL Server 2008 (SP3) - 10.0.5512.0 (X64) Aug 22 2012 19:25:47 Copyright (c) 1988-2008 Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (VM)
Este é um bug do analisador que existe apenas no SQL Server 2008. As versões não PDW do SQL Server anteriores a 2012 não oferecem suporte à
ORDER BY
cláusula com funções agregadas comoMIN
:O suporte à função de janelas foi consideravelmente ampliado em 2012, em comparação com a implementação básica disponível a partir do SQL Server 2005. As extensões foram disponibilizadas no Parallel Data Warehouse antes de serem incorporadas ao produto box. Como as várias edições compartilham uma base de código comum, mensagens de erro enganosas como essa são possíveis.
Se você estiver interessado, a pilha de chamadas quando o agregado é verificado pelo analisador é mostrada abaixo. Como o agregado tem uma
OVER
cláusula comORDER BY
, uma verificação de PDW é emitida:Esta verificação falha imediatamente com um erro do analisador:
Felizmente, você não precisa de um agregado em janela que suporte
ORDER BY
enquadramento para resolver seu problema de código.Isso será resultado da fusão das bases de código da versão PDW, Azure e caixa. Começaremos a ver mensagens como esta ou que você não está em uma máquina do Azure ao tentar fazer coisas que só foram lançadas no Azure.
Quanto à pergunta de Martin sobre o que são as extensões PDW, esses seriam os recursos da linguagem T-SQL que são implementados apenas no produto Parallel Data Warehouse (PDW).
Respondendo a isso como um elemento da mensagem de erro. Como @MartinSmith disse acima,
Isso é mencionado oficialmente aqui SQL Server 2008 R2 - Cláusula OVER (Transact-SQL)
Ainda mais significativo é o palavreado no SQL Server 2012 - Cláusula OVER (Transact-SQL)
Portanto, parece que certamente não está disponível em 2008 - embora essa mensagem de erro seja uma maneira realmente obscura de dizer "não implementado" e, em 2012, parece que a posição oficial da Microsoft é que sua milhagem pode variar .