Ho un'applicazione ASP .NET 4.5. In una pagina di manutenzione è una casella di testo che consente agli utenti amministrativi di scrivere SQL che viene eseguito direttamente sul database di SQL Server 2008.Come impedire alle query SQL inefficienti di rallentare un server di database
Occasionalmente uno degli utenti amministrativi scrive SQL inefficiente e il processo di SQL Server inizia a utilizzare tutta la memoria e i cicli della CPU sul server. Dovremo quindi avviare e interrompere il servizio per ottenere nuovamente il server di risposta.
C'è un modo in cui posso fermarli da query che consumano tutte le risorse? Queste query non torneranno abbastanza velocemente da consentire all'utente di vederle, quindi è possibile cancellare la query.
Edit mi rendo conto che sarebbe stato meglio per impedire agli utenti di scrivere query SQL, ma purtroppo non è possibile rimuovere questa funzionalità dall'applicazione. Gli utenti amministratori non vogliono essere educati.
Se si dispone del [grado massimo di parallelismo] (http://technet.microsoft.com/en-us/library/ms189094.aspx) impostato su illimitato (o su più di 1) è possibile eseguire tutte le query 'MAXDOP 1' per impedire loro di mangiare tutti i core. – DaveShaw
Detto questo, non conosco un modo tecnico, a parte il limitato CommandTimeout sulla connessione, o il monitoraggio e l'educazione di chi causa questi problemi. – DaveShaw
Supponendo di avere una configurazione di produzione/gestione temporanea, fare in modo che l'amministratore verifichi prima le query sulla gestione temporanea in modo che una macchina importante non sia vincolata. Anche se uccidi la query dopo un limite di tempo, nel frattempo potresti impegnare risorse importanti (non buone in produzione). –