Вы можете указать время ожидания соединения в строке соединения SQL при подключении к базе данных, например:
"Data Source=localhost;Initial Catalog=database;Connect Timeout=15"
На уровне сервера используйте MSSQLMS для просмотра свойств сервера, а на странице Соединения вы можете указать время ожидания запроса по умолчанию.
Я не совсем уверен, что запросы продолжают выполняться после закрытия клиентского соединения. Запросы не должны занимать так много времени, MSSQL может обрабатывать большие базы данных, я работал с ГБ данных на нем раньше. Запустите профиль производительности для запросов, возможно, некоторые удачно расположенные индексы могут ускорить его, или переписать запрос тоже.
Обновление:
Согласно этому списку , тайм-ауты SQL происходят при ожидании подтверждения внимания от сервера:
Предположим, вы выполнили команду, а затем команда истекло. Когда это происходит, драйвер SqlClient отправляет специальный 8-байтовый пакет на сервер, который называется пакетом внимания. Это говорит серверу прекратить выполнение текущей команды. Когда мы отправляем пакет внимания, нам приходится ждать подтверждения внимания от сервера, и теоретически это может занять много времени и времени. Вы также можете отправить этот пакет, вызвав SqlCommand.Cancel для асинхронного объекта SqlCommand. Это особый случай, когда мы используем 5 секундный тайм-аут. В большинстве случаев вы никогда не попадете в этот, сервер обычно очень чувствителен к пакетам внимания, потому что они обрабатываются очень низко на сетевом уровне.
Похоже, что после истечения времени ожидания клиентского соединения на сервер отправляется сигнал об отмене выполняющегося запроса.