Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Альтернатива kill  [new]
IMOL
Member

Откуда:
Сообщений: 98
Можно ли, напрмер, не "убивать" долгий процесс (kill), а просто его отложить, что то типа "WAITFOR DELAY" :)?
23 май 13, 10:41    [14337138]     Ответить | Цитировать Сообщить модератору
 Re: Альтернатива kill  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37228
Написать в нужном месте долгого процесса WAITFOR DELAY.
23 май 13, 10:43    [14337153]     Ответить | Цитировать Сообщить модератору
 Re: Альтернатива kill  [new]
IMOL
Member

Откуда:
Сообщений: 98
Не очень устраивает.
Какой-то пользователь дал некий запрос, "подвесивший" БД.
Определили номер такого процесса, что-то типа:

SELECT @spid = ep.spid
FROM sys.dm_exec_requests er
INNER JOIN sys.dm_exec_sessions es on es.[session_id] = er.[session_id]
INNER JOIN sysprocesses ep on ep.[hostprocess] = es.[host_process_id] WHERE er.database_id = db_id('.....') AND es.program_name='......' AND es.host_name='........' AND EXISTS(.....) и т.д.

Теперь имеем альтернативу либо этот процесс "убить", либо "отложить" его.... Можно ли что-то реализовать?
23 май 13, 10:48    [14337169]     Ответить | Цитировать Сообщить модератору
 Re: Альтернатива kill  [new]
Glory
Member

Откуда:
Сообщений: 104751
KILL убивает соединение, а не процесс в нем
Управлять происходящим в соединении вы не можете
23 май 13, 10:50    [14337177]     Ответить | Цитировать Сообщить модератору
 Re: Альтернатива kill  [new]
IMOL
Member

Откуда:
Сообщений: 98
Это понятно. Суть вопроса состоит в том, чтобы это подключение не рвать, а что-то, типа приостанавливать .... Ради бога простите за мутную терминологию :). Но идея состоит в том, чтобы не заставлять пользователя после убития процесса реконектится к БД...
23 май 13, 11:23    [14337357]     Ответить | Цитировать Сообщить модератору
 Re: Альтернатива kill  [new]
Glory
Member

Откуда:
Сообщений: 104751
IMOL
Это понятно. Суть вопроса состоит в том, чтобы это подключение не рвать, а что-то, типа приостанавливать .... Ради бога простите за мутную терминологию :). Но идея состоит в том, чтобы не заставлять пользователя после убития процесса реконектится к БД...

Средств управления чужим коннетом нет.
23 май 13, 11:27    [14337375]     Ответить | Цитировать Сообщить модератору
 Re: Альтернатива kill  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
IMOL,

если речь о приложении -то ето еще можно реализовать - реконект,повторный коннект НО со стороны клиента. Но опять же чисто коннект...контекст будет потерян
Если уж савсем с ума сойти - то можно опять же на клиенте реализовать сохранение последней команды с клиента до возрата с сервера сообщения об успешном исполнении команды. НО в таком подходе больше граблей ,чем пользы. Потому как данные на сервер могут измениться и ваша команда с клиента не будет актуальной.
23 май 13, 11:32    [14337400]     Ответить | Цитировать Сообщить модератору
 Re: Альтернатива kill  [new]
Glory
Member

Откуда:
Сообщений: 104751
IMOL
Какой-то пользователь дал некий запрос, "подвесивший" БД.
Определили номер такого процесса, что-то типа:


Resource Governor is a new technology in SQL Server 2008 that enables you to manage SQL Server workload and resources by specifying limits on resource consumption by incoming requests.

Т.е. запоминаете запрос. И для него создаете пул разрешенных ресурсов. И при следующем запуске запрос не сможет использовать больше ресурсов, чем вы разрешите
23 май 13, 11:41    [14337469]     Ответить | Цитировать Сообщить модератору
 Re: Альтернатива kill  [new]
IMOL
Member

Откуда:
Сообщений: 98
Glory
Средств управления чужим коннетом нет.


За исключением команды "kill" :)
23 май 13, 11:42    [14337486]     Ответить | Цитировать Сообщить модератору
 Re: Альтернатива kill  [new]
IMOL
Member

Откуда:
Сообщений: 98
Glory
Resource Governor is a new technology in SQL Server 2008 that enables you to manage SQL Server workload and resources by specifying limits on resource consumption by incoming requests.

Т.е. запоминаете запрос. И для него создаете пул разрешенных ресурсов. И при следующем запуске запрос не сможет использовать больше ресурсов, чем вы разрешите



Вот что-то такое и нужно. Большое спасибо. :)
23 май 13, 11:44    [14337498]     Ответить | Цитировать Сообщить модератору
 Re: Альтернатива kill  [new]
IMOL
Member

Откуда:
Сообщений: 98
Как я понял речь идет о регуляторе ресурсов. Итак. Создал пул ресурсов, группы рабочей нагрузки. В процессе написания функции-классификатора требуется (желательно) определить, к какой таблице (или какой запрос выполняется). То есть, HOST_NAME(), SUSER_NAME(), APP_NAME() - "маловато будет" :). Не подскажите, можно ли (и как) в функции-классификаторе определить текст запроса или хотя бы таблицу, к которой идет обращение в текущей сессии?



Glory
....Т.е. запоминаете запрос. И для него создаете пул разрешенных ресурсов. И при следующем запуске запрос не сможет использовать больше ресурсов, чем вы разрешите


Уважаемый, Glory! Еще раз спасибо за подсказку.
Вы указываете, что можно запомнить сам "проблемный запрос" и прямо для него создать пул разрешенных ресурсов? Или я Вас неверно понял?
23 май 13, 22:18    [14341351]     Ответить | Цитировать Сообщить модератору
 Re: Альтернатива kill  [new]
Гость333
Member

Откуда:
Сообщений: 3683
IMOL
Не подскажите, можно ли (и как) в функции-классификаторе определить текст запроса или хотя бы таблицу, к которой идет обращение в текущей сессии?

Функция-классификатор выполняется в момент инициализации соединения с сервером. Следовательно, ни текст запроса, ни таблицу определить в этой функции невозможно. Поэтому неясно, что имел в виду Glory, говоря "запоминаете запрос".

Насчёт того, что "запрос подвесил БД". Что это означает? Запрос поглотил все ресурсы CPU, или памяти, или интенсивно читает с диска? Дисковая нагрузка не регулируется регулятором ресурсов, если что.
24 май 13, 12:00    [14343806]     Ответить | Цитировать Сообщить модератору
 Re: Альтернатива kill  [new]
Glory
Member

Откуда:
Сообщений: 104751
Гость333
Функция-классификатор выполняется в момент инициализации соединения с сервером. Следовательно, ни текст запроса, ни таблицу определить в этой функции невозможно. Поэтому неясно, что имел в виду Glory, говоря "запоминаете запрос".

не запрос, коннект. Описался.
24 май 13, 12:11    [14343912]     Ответить | Цитировать Сообщить модератору
 Re: Альтернатива kill  [new]
IMOL
Member

Откуда:
Сообщений: 98
Гость333
IMOL
Не подскажите, можно ли (и как) в функции-классификаторе определить текст запроса или хотя бы таблицу, к которой идет обращение в текущей сессии?

Функция-классификатор выполняется в момент инициализации соединения с сервером. Следовательно, ни текст запроса, ни таблицу определить в этой функции невозможно....".


То есть, по сути, ограничивать ресурсы можно только на подключение к БД только некому хосту и пользователю? Системные функции sys.dm_exec_requests, sys.dm_exec_sessions, sysprocesses, которые бы уточнили, что данный пользователь делает, "запихнуть" в функцию-классификатор никак не получится :)?


Гость333
Насчёт того, что "запрос подвесил БД". Что это означает? Запрос поглотил все ресурсы CPU, или памяти, или интенсивно читает с диска? Дисковая нагрузка не регулируется регулятором ресурсов, если что.


CPU
24 май 13, 13:16    [14344639]     Ответить | Цитировать Сообщить модератору
 Re: Альтернатива kill  [new]
Гость333
Member

Откуда:
Сообщений: 3683
IMOL
Системные функции sys.dm_exec_requests, sys.dm_exec_sessions, sysprocesses, которые бы уточнили, что данный пользователь делает, "запихнуть" в функцию-классификатор никак не получится :)?

Ну если вы найдёте способ запрашивать данные из указанных объектов на произвольный момент в будущем, то запихивайте ;-)
24 май 13, 13:26    [14344729]     Ответить | Цитировать Сообщить модератору
 Re: Альтернатива kill  [new]
IMOL
Member

Откуда:
Сообщений: 98
Гость333
IMOL
Системные функции sys.dm_exec_requests, sys.dm_exec_sessions, sysprocesses, которые бы уточнили, что данный пользователь делает, "запихнуть" в функцию-классификатор никак не получится :)?

Ну если вы найдёте способ запрашивать данные из указанных объектов на произвольный момент в будущем, то запихивайте ;-)


Способ реализовать можно :), да только при сохранении функции-классификатора вылетает :
"Невозможно связать схему функция "<dbo.функция-классификатор>", так как она ссылается на системный объект "sys.dm_exec_requests".
24 май 13, 14:09    [14345115]     Ответить | Цитировать Сообщить модератору
 Re: Альтернатива kill  [new]
Гость333
Member

Откуда:
Сообщений: 3683
IMOL,

Ок, спасибо за информацию, буду знать
24 май 13, 14:11    [14345135]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить