Incorrect syntax near the keyword ‘xpto’

Incorrect syntax near the keyword ‘xpto’

Overview

Você já se deparou com aquele erro chato ao usar o Microsoft OLE DB Provider for SQL Server em sua aplicação, especialmente em máquinas antiquadas rodando o Windows XP? Pois é, parece que o progresso deixou alguns para trás, mas não tema! Neste post, vamos mergulhar juntos em uma solução simples e engenhosa que vai te tirar desse aperto. Vem comigo desvendar esse mistério dos tempos modernos, e deixar sua aplicação rodando liso, como se fosse 2023.

​Esse é um erro que ocorre em aplicações que usam o “Microsoft OLE DB Provider for SQL Server​”, ao invés do “xpto” vem o comando que o parser do OLE DB não consegue identificar, podendo ser o WITH, MERGE ou algum outro comando de uma versão mais recente do SQLServer.

Embora seja um bug isso ainda não foi corrigido até a ultima versão do MDAC (2.81.1132.0) liberada para downlod pela Microsoft, isso significa que esse problema ocorrerá em máquinas com o Windows XP instalado, mas em versões recentes do Windows (7 ou 8) esse problema não ocorre, devido a versão do MDAC (6.3.9600.16384) já estar compatível com os novos comandos do SQLServer.

Se você está preso a uma maquina com WindowsXP, como solução paliativa deve ser inserido um ponto e virgula (;) antes do comando que está com problema, no caso do WITH seria necessário colocar o “;” antes do comando que o WITH está sendo utilizado. Essa solução “engana” o parser e passa o comando diretamente pro banco de dados executar.