2009-09-01 1 views

risposta

3

Non ho mai sentito di impostare un timeout per l'esecuzione di una stored procedure sul lato server. Solitamente si specifica il timeout per il comando che esegue la procedura nel provider di dati che si sta utilizzando, come ADO.NET.

+0

Sì, è un timeout del client – gbn

1

Questo article ha una spiegazione molto buona sui timeout delle query e su come essi sono solo un concetto lato client. È possibile impostare il timeout della query nello studio di gestione di SQL Server dal menu Strumenti | Opzioni.

0

È necessario impostare il timeout quando si esegue la procedura memorizzata sul client. Per quanto riguarda SQL Server, lascerà che la stored procedure funzioni sempre, a meno che non venga detto di annullarla.

5

Come ha detto Chris Tybur, non è possibile il timeout della query per un proc memorizzato in il proc memorizzato o sul server SQL.

CommandTimeout è un concetto client: il client interromperà la query dopo un certo periodo di tempo. Non esiste il timer o il meccanismo di dead man per un proc memorizzato per abortire se stesso/o qualsiasi query). Il server SQL consentirà l'esecuzione di una query per sempre.

"Remote Query Timeout" è esattamente questo: timeout quando SQL Server effettua una chiamata remota, quando SQL Server stesso è il client di un altro server. Si dice nella descrizione:

Questo valore si applica a un connessione in uscita avviato dal Motore di database come query remota. Questo valore non ha alcun effetto sulle query ricevute da Motore di database.

Un recente interrogazione con buone informazioni: - "Quello che sta accadendo che si desidera impedire" timeout setting for SQL Server

3

Attendere la vera domanda è, Tutti si sono concentrati sul lato server, sul lato client, ma in realtà non sappiamo perché stai facendo questa domanda (ed è importante).

E un altro "perché": perché si desidera impostare un timeout su una "stored procedure"? Perché non una vista, una funzione o una query? Hai usato il termine "stored procedure" per un motivo particolare o ti interesserebbe solo imparare come impostare un timeout in T-SQL?

Sto chiedendo perché mi chiedo se stai avendo problemi di blocco e forse SET LOCK_TIMEOUT 1000 o WITH (NOLOCK) potrebbe essere quello che ti serve davvero. Senza più informazioni anche se non posso dire. Se puoi darci più feedback sul motivo per cui ti stai chiedendo, cosa sta succedendo e cosa alla fine vuoi che accada se il tuo "timeout" è raggiunto, forse possiamo aiutarti di più.

Bottom line: Sì, è possibile impostare un timeout in T-SQL e sì è possibile interrompere l'esecuzione di una stored procedure con T-SQL. Ma non so abbastanza su cosa vuoi offrire consigli su dove cercare o per darti maggiori informazioni. Sono un po 'spaventato che ho già detto troppo :)