Il Metodo SeverConnection.Cancel()
funziona in modo simile al metodo SqlCommand.Cancel()
ei Documentation stati:
Se non c'è nulla da annullare, non accade nulla. Tuttavia, se è in corso un comando e il tentativo di annullamento non riesce, non viene generata alcuna eccezione .
In alcuni, rari, casi, se si chiama ExecuteReader quindi invito a chiudere (implicitily o esplicitamente) prima di chiamare Annulla e quindi chiamare Annulla, il comando cancel non verrà inviato a SQL Server e il set risultato può continua a trasmettere dopo aver chiamato Chiudi. Per evitare ciò, assicurarsi di chiamare Annulla prima di chiudere il lettore o la connessione .
Il che significa che il metodo di cancellazione funziona, Se si chiama prima della chiamata al metodo close()
.
Se si chiama dopo, il comando non sarà inviato a SQL con conseguente continua stream per lo sql dopo per chiamare il metodo close()
.
Inoltre, se v'è un comando in corso e il tentativo di cancellare fallisce, non si riceveranno un errore come nessuna eccezione viene generata in questo caso.
fonte
2017-12-18 11:27:23
Si consiglia di evitare SMO. Ha una serie di problemi tra cui non essere nemmeno remotamente sicuro. Ho finito per buttarlo via e ho fatto tutto con le viste di 'sys'. –
Forse vuoi disconnettere il servocomando? https://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.common.connectionmanager.disconnect – Chuck
SQL Profiler non sembra chiaro su cosa faccia. Qualunque cosa faccia, non appare in SQL Profiler come un evento di disconnessione, o qualsiasi altra cosa che possa discernere. Posso annullare la connessione e quindi continuare quello che stavo facendo senza generare errori. Sono con Jonathan Allen. Fallo senza SMO. – quest4truth