Come Correggere L’errore Di Procedura Memorizzata Di Executereader?

Fai funzionare il tuo PC come nuovo in pochi minuti. Clicca qui per scaricare.

Sto concatenando una o due stored procedure e sto utilizzando problemi a ottenere errori se funzionano correttamente. Poiché alcune di queste procedure salvate richiedono molto tempo, vengo conservato SqlInfoMessageEventHandler e anche leggi come RAISERROR ("qualcosa", 10.1) WITH NOWAIT nei rimedi utilizzati per fornirli agli utenti Rapporto sullo stato di avanzamento dell’operazione. Per fare tutto, ho letto che cmd.ExecuteNonQuery() non sono certamente integrati e usa invece questi tempi per cmd.ExecuteReader(). Ho perseguito questo e sembra essere un caso particolarmente specifico; Non capisco il messaggio ExecuteNonQuery.

executereader stored procedure error

Il problema principale che ho riscontrato anche è che se si utilizza ExecuteReader, se il mio processo autorizzato genera errori, vengono trascurati. Con questo. voglio esprimere. La mia applicazione .NET che inizialmente minuti questa procedura da un’area di prova e se tutte le procedure memorizzate hanno un errore (come SELECT 1/0), le prestazioni complessive non vanno mai in qualche ostacolo, ma invece fanno una moneta privata. Ecco un esempio:

  SE ESISTENTE 1. (seleziona DA sys.objects WHERE object_id = OBJECT_ID (N '[dbo]. [TempTstTbl]') put and enterGo (N'U '))ELIMINA TABELLA [dbo]. [TempTstTbl]CREA TABELLA [dbo]. [TempTstTbl] (    Passaggio INT,   Val VARCHAR (50))SE ESISTENTE (SELEZIONARE sys.objects WHERE object_id = OBJECT_ID (N '[dbo]. [Child]') e inserire N'PC '))DROP (n'p ', PROCEDURE [dbo]. [Child]CAMMINARE A PIEDICREA PROCEDURA [dbo]. [Bambino]COME? 'O COSAINIZIAREINIZIA PROVA    In [dbo]. [TempTstTbl] (Step, Val) VALORI (1, 'DA FIGLIO A FALLIMENTO') inserire    SELEZIONA 1/0    --RAISERROR ("Questo dovrebbe davvero fallire", 16, 2)    INSERT [dbo] all'interno di. [TempTstTbl] (Step, Val) VALORI (2, 'DA FIGLIO A ERRORE')FINE PROVAINIZIA L'AMORE    DICHIARA @ErrorMessage NVARCHAR (4000);    DICHIARA @ErrorSeverity INT;    DICHIARA @ErrorState INT;    SCEGLIERE        @ErrorMessage = MESSAGGIO DI ERRORE (),        @ErrorSeverity = ERROR_SEVERITY (),        @ErrorState incontra ERROR_STATE ();    2. Usa RAISERROR su CATCH proibito per restituire un errore   - Notifica di un errore attivata inizialmente    - Fatto che andrà al blocco CATCH.    RAISERROR (@ErrorMessage, - SMS.               @ErrorSeverity è la loro gravità.              @ErrorState è lo stato.               );FINE DELLA CATTURA;FINECAMMINARE A PIEDISE ESISTE (SELEZIONARE * DA sys.objects DOVE object_id è uguale a OBJECT_ID (N '[dbo]. [Parent]') E reinserire (N'P ', N'PC'))Procedura DROP [dbo]. [Genitore]CAMMINARE A PIEDIPROCEDURA DI CREAZIONE [dbo]. [Genitore]COME? 'E E' COSAINIZIAREINIZIO   INSERISCI IN [dbo]. [TempTstTbl] (Step, Val) VALORI (1, 'DA FIGLIO GENITORE') prima di Exec [dbo]. [bambino]   INSERISCI IN [dbo]. [TempTstTbl] (Step, Val) VALORI (2, 'DA GENITORE A FIGLIO')FINE PROVAINIZIA L'AMORE    DICHIARA @ErrorMessage NVARCHAR (4000);    DICHIARA INT; @errorseverity DICHIARA @ErrorState INT;    SCEGLIERE        @ErrorMessage è uguale a consentire loro di ERROR_MESSAGE (),        @ErrorSeverity = ERROR_SEVERITY (),        @ErrorState = ERROR_STATE ();    - Utilizzare RAISERROR in tutto il blocco CATCH per ripristinare un errore    - Informazioni sull'errore originale causato da quel particolare    - Esecuzione del passaggio al tuo blocco CATCH.    RAISERROR (@ErrorMessage, - SMS.               @ErrorSeverity è stata la gravità.              @ErrorState sembra essere lo stato.               );FINE DELLA CATTURA;FINECAMMINARE A PIEDIESEGUI [dbo]. [Genitore]SELEZIONA * DA [dbo]. [TempTstTbl] 
  evita di chiudere button4_Click (object sender, EventArgs e)    using (SqlConnection conn = present SqlConnection (@ "Data Source = XPDEVVM  XPDEV; Initial Catalog = MyTest; Integrated Security = SSPI;"))            conn.Open ();       Utilizzo (SqlTransaction trans = conn.BeginTransaction ())                    installazione (SqlCommand cmd = conn.CreateCommand ())                            cmd.Transaction implica trans;                cmd.CommandText significa "[cfg]. [parent]";                cmd.CommandType è uguale a CommandType.StoredProcedure;                Tentare                                    - cmd.ExecuteReader(); - L'utilizzo di questo specifico o altro di ExecuteNonQuery significa che l'errore di fase 0 nel trattamento del cluster verrà ignorato e tutto verrà sicuramente controllato correttamente :(                    cmd.ExecuteNonQuery ();                   Trans.Commit ();                                rappresentare (eccezione)                                    trans.Ripristino ();                                         

Qualcuno ha una tattica su come posso pubblicare i miei rapporti sullo stato di avanzamento del processo confermato ottenendo eccezioni se ci sono errori nel processo di input del magazzino?

executereader ha conservato l'errore di procedura

Ottieni le migliori prestazioni dal tuo computer. Clicca qui per ottimizzare il tuo PC in 3 semplici passaggi.