I'estou a tentar executar a seguinte consulta bastante simples no SQL Server Management Studio:
SELECT TOP 1000 *
FROM
master.sys.procedures as procs
left join
master.sys.parameters as params on procs.object_id = params.object_id
Isto parece totalmente correcto, mas continuo a receber o seguinte erro:
Msg 102, Nível 15, Estado 1, Linha 6 sintaxe incorrecta perto de '' '.
Funciona se eu tirar a junção e fizer apenas uma simples selecção:
SELECT TOP 1000 *
FROM
master.sys.procedures as procs
Mas eu preciso da união para trabalhar. Eu não'nem sequer* tenho** o fio ''' nesta consulta, para que eu possa'não descobrir o que faz'não gosto.
Tais problemas inesperados podem aparecer quando se copia o código de uma página web ou e-mail e o texto contém caracteres não imprimíveis como CR ou LF individuais e espaços não quebráveis.
Panagiotis Kanavos tem razão, às vezes copiar e colar T-SQL pode fazer aparecer caracteres indesejados...
Finalmente encontrei uma forma simples e rápida (apenas o Notepad++ necessário) para detectar qual o carácter errado, sem ter de reescrever manualmente toda a declaração: não há necessidade de guardar qualquer ficheiro em disco.
It's bastante rápido, em Notepad+++:
Deve encontrar facilmente o(s) carácter(es) errado(s)
O erro para mim foi que li a declaração SQL de um ficheiro de texto, e o ficheiro de texto foi guardado no formato UTF-8 com a marca de ordem de bytes (byte order mark).
Para resolver isto, abri o ficheiro no Notepad++ e sob Encoding, escolhi UTF-8. Em alternativa, pode remover os três primeiros bytes do ficheiro com um editor hexadecimal.