Связанный: Как программно отменить процесс выполнения SQL Server
Я создал приложение (Windows, WPF), которое в основном является средством просмотра данных в базе данных (Sql Server). Приложение не имеет функции редактирования.
Приложение предоставляет возможность поиска записей на основе ввода пользователя. По большей части строки ищутся по ключевому столбцу и выполняются довольно быстро. Но один столбец в таблице представляет собой большое текстовое поле и я хочу предоставить возможность поиска строк на основе содержимого этого поля. Из-за этого выполнение результирующего SQL-запроса может занять некоторое время. Я хочу предоставить кнопку «Стоп», чтобы пользователь мог прервать поиск, если это необходимо. Ссылка, которую я разместил выше, использует команду Kill для уничтожения spid на сервере Sql, но я не уверен, как это будет работать в моей ситуации, поскольку я использую Entity Framework (4.1)
Например, предположим, что у вас есть запрос, подобный этому:
var docs = from document in context.Documents
join header in context.Headers
on document.DocumentID equals header.HeaderID into headerGroup
from subdoc in headerGroup.DefaultIfEmpty()
where document.LargeTextColumn.Contains("search term")
select (...)
foreach (var item in docs)
{
//Do something with item here
}
Поскольку запрос на самом деле не выполняется, пока я не повторю его с помощью оператора foreach, как я могу предоставить пользователю кнопку «Остановить запрос»? Это похоже на кнопку остановки в Sql Server Management Studio.
Это возможно?