Tenho várias consultas salvas (cada uma estava funcionando bem quando as desenvolvi). Mas quando eu os carrego no SSMS, eles imediatamente mostram erros em todos os nomes de tabelas que estão no script. Além disso, não consigo selecionar o banco de dados relevante na caixa "Bancos de dados disponíveis" (ou qualquer banco de dados nesse servidor) e USE [DB_NAME]
o comando também não funciona.
No entanto, se eu navegar no "Object Explorer" para qualquer tabela em qualquer banco de dados no servidor que eu quiser e fizer até mesmo um simples Select Top 1000
, cole a consulta inteira que não está funcionando - voila - ela funciona bem.
É importante para isso que eu esteja conectado a vários servidores SQL em máquinas diferentes ao mesmo tempo? Caso seja necessário - todos SQL Server 2012.
Alguém tem uma ideia do que está acontecendo? É extremamente irritante passar por todas as etapas acima sempre que preciso executar uma consulta. Obrigado!
Talvez seja necessário adicionar "GO" após a instrução "USE [DB_NAME]". Alguns comandos precisam ser os primeiros no lote. Com GO, o comando USE DB é executado como primeiro lote, seguido por outro lote.
Então:
Bem, depois de investigá-lo mais em um pouco de tempo livre, parece que isso é um recurso, não um bug. Por padrão, o SSMS abre janelas de consulta no contexto do servidor atualmente selecionado no Pesquisador de Objetos. A sintaxe será verificada neste servidor "ativo" e, se a consulta usar um diferente, será dolorosamente sublinhado em vermelho em todos os lugares.
A solução para isso é um tanto simples e veremos como funcionará bem no futuro: use o SSMS na instrução
SQLCMD mode
with:CONNECT
.