Ao criar um procedimento armazenado no SQL Server, você pode se referir a tabelas que não existem. Mas, se a tabela existir, qualquer coluna mencionada no procedimento deverá existir nessa tabela ( Resolução de Nome Diferido ).
É possível instruir o SQL Server para adiar a resolução de nomes de todas as tabelas mencionadas em um procedimento, independentemente de elas existirem ou não? Quero manter a verificação geral da sintaxe, portanto, mesmo se possível, invadir a definição de procedimento armazenado em uma tabela do sistema não é uma opção.
Espero que minha solicitação para fazer isso possa parecer um pouco estranha , então, aqui estão alguns antecedentes: eu gero automaticamente definições de tabela e procedimentos armazenados a partir de um aplicativo escrito em C # e é muito difícil para mim alterar o código para ordenar as alterações conforme o SQL precisar eles. Meu código "garante" que o esquema seja consistente em uma transação, mas atualmente não posso garantir que as colunas da tabela sejam definidas antes de definir o procedimento armazenado que as referencia.
Abaixo está um exemplo canônico do SQL criado pelo C # que "ilustra" o problema que estou tentando resolver.
--Say this table already exists.
CREATE TABLE myTable
(
a NVARCHAR(MAX)
)
GO
--My C# code creates something like this
BEGIN TRAN
GO
--the stored procedure gets generated first.
CREATE PROCEDURE mySproc
AS
BEGIN
SELECT a,b FROM myTable
END
--then the table update
ALTER TABLE myTable
ADD b nvarchar(MAX)
COMMIT TRAN
Ele é possível para mim para corrigir isso no código C #, mas eu estou esperando por um simples "mágica" ajustar posso puxar o SQL. Isso vai economizar muito tempo para mim.