Domanda

Sto guardando un errore da una delle nostre applicazioni web, e si chiama una stored procedure che era responsabile per l'aggiornamento di un record nel database.

Questa stored procedure ha lavorato per settimane senza problemi.Poi un giorno ha iniziato a lanciare errori, durante il debug abbiamo trovato la causa per essere all'interno della stored procedure.

Fondamentalmente era una dichiarazione come questa

Begin
  // Do Stuff

  Set
End

Così il SET in realtà non è mai impostato nulla.Per qualche ragione, questa funziona perfettamente bene sul nostro server, ed è stato in esecuzione bene su un client server, fino a prima di oggi, quando ha deciso di iniziare a lamentarsi.(Errore di Sintassi)

C'è qualche tipo di SQL Server impostazione che sarebbe la causa di questo improvviso cambiamento nel comportamento?

Chiarimento - Il SET è sempre stato nelle procedure.E l'esecuzione di un SET di per sé, o come una dichiarazione unica, in una stored procedure, infatti, il lavoro per me.Questo è il problema non lavoro.Quindi non vi è nulla che possa causare a lavoro quando dovrebbe essere in difetto?

È stato utile?

Soluzione

Una procedura con un SET come che normalmente non riescono a compilare, anche se il SET non può essere raggiunto:

alter procedure dbo.testproc as
    begin
    return 1;
    set
    end

Incorrect syntax near the keyword 'SET'.

Dal momento che l'alter non riesce, non vedo come la procedura potrebbe finire nel database, in primo luogo?

O forse siete stati in esecuzione in modalità di compatibilità per SQL Server 2000 (che comunque ha permesso a questo.) Cambiando la compatibilità mdoe a SQL Server 2005 o superiore sarebbe poi rompere la procedura.

Altri suggerimenti

L'esecuzione di "SET", di per sé, genera un errore.Mi è stato originariamente intenzione di suggerire che si potrebbe avere ramificazione codice (IFs, Restituisce, Goto, etc.) che ha causato la linea di non essere mai raggiunto...ma trovo che non posso creare una stored procedure che contiene questo come uno stand-alone istruzione.

Se si script della procedura e provare a ricreare (con un nome diverso), può essere creato?

Potrebbe essere la pena di distacco dello script, o parte di esso, come il tuo sono confortevoli, rendendo pubbliche.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top