É possível criar ou alterar um procedimento armazenado no SQL Server 2005* que não compila o procedimento?
(* - sim, infelizmente, ainda precisamos apoiar 2005 como nosso padrão mínimo)
Eu tenho uma situação em que seria extremamente útil poder criar/alterar um procedimento armazenado que é sintaticamente válido, mas não semanticamente válido (devido a nomes de tabela/coluna incorretos)... que posso alterar de acordo com o SSMS.
Acabei de pensar e é uma solução bem simples ... comente todo o conteúdo do procedimento armazenado quando ele estiver sendo alterado/criado.
Usando Ctrl+K Ctrl+Cirá comentar cada linha individualmente - o que seria melhor do que usar /* */
em torno da coisa toda, pois isso falhará se já houver alguma instância de /* */
no procedimento armazenado.
Eu ainda estaria muito interessado em saber se existe uma maneira real de dizer ao SSMS para ignorar nomes inválidos de tabelas/exibições/colunas.
Obrigado ao @marcelo pela resposta, e parece que usar o nome de uma tabela inexistente permitirá criar o procedimento armazenado.
No entanto, não permite criar um procedimento armazenado se você usar uma coluna inexistente em uma tabela existente
O que você está se referindo é a resolução de nome adiada e é explicado mais detalhadamente aqui Resolução e Compilação de Nome Adiada .
Basicamente, não, você não pode alterar as regras dos analisadores para quais objetos devem existir no tempo de análise e compilação. Eu já tive esse problema ao implantar SPs que fazem referência a servidores vinculados e esses servidores vinculados não tinham uma conexão válida. Para contornar isso, atualizei a lógica do servidor vinculado para ser SQL dinâmico.
Acredito que no sql server 2005 você possa criar um stored procedure que referencia uma tabela que não existe. Acabei de fazer isso, veja meu exemplo abaixo.