Ho controllato molti thread ora e non riesco a trovare una risposta per questo, e ho bisogno di essere abbastanza certo/sicuro di aver ragione nell'assumerlo prima di rispondere a un cliente.SQL Server Convalida un proc memorizzato prima di eseguirlo?
quindi, come afferma l'intestazione, SQL Server convalida una stored procedure prima di eseguirla?
IE: Anche se ho un IF statement
che non potrà mai soddisfare una certa condizione, sarà il codice che IF statement condition
essere controllato e validato prima di eseguire?
EDIT: Ecco un rapido esempio:
DECLARE @ParamSource VARCHAR(2) = 'V3'
IF @ParamSource = 'V1'
BEGIN
--USE LINKED SERVER HERE WHICH THROWS AN ERROR ABOUT CONNECTIONS
END
IF @ParamSource = 'V3'
BEGIN
--DO MY ACTUAL CODE
END
potrò mai rispondere a tale prima condizione, ma per qualche ragione, il mio proc memorizzato sta cercando di convalidare il tempo di esecuzione e mantiene erroring.
Sono convalidati (almeno in parte) quando vengono inizialmente creati, ma non in fase di runtime. Questo tuttavia non è vero per SQL dinamico che non viene mai convalidato. Questo deriva dall'esperienza personale, non da alcuna documentazione. Se si desidera verificare questa teoria, è possibile creare una semplice stored procedure su una tabella di test, quindi rimuovere una colonna dalla tabella di test. La stored procedure tenterà comunque di eseguire, ma genererà un errore. – user2366842
@ user2366842- grazie per la risposta ... La ragione per cui penso che convalida o faccia qualcosa in questo senso è perché sono in procinto di creare un 'Ambiente di Disaster Recovery 'e una delle' istruzioni IF' usa un collegamento server a cui non posso connettermi per qualche motivo (ma non ho mai avuto bisogno di soddisfare questa condizione, posso cancellare questo codice, ma volevo solo sapere se questo è ciò che SQL stava facendo?) – Mike
Nome rinviato Risoluzione e compilazione: https: //technet.microsoft.com/en-us/library/ms190686(v=sql.105).aspx (collegamento aggiornato) – Pred