При использовании SQL Server 2005 или великое (который я предполагаю, что Вы основаны на своем теге), можно использовать Представления управления данными SQL Server (часто называемый DMVs). Они дадут Вам целый диапазон представлений в то, что продолжается в Вашей системе. В Вашем особом случае Вы могли бы хотеть выполнить следующий запрос (или некоторое ответвление его):
ВЫБЕРИТЕ total_physical_reads, total_logical_reads, total_logical_writes, execution_count, total_worker_time, total_elapsed_time, total_elapsed_time / execution_count avg_elapsed_time, creation_time, last_execution_time, st.text
ОТ sys.dm_exec_query_stats AS qs КРЕСТ ПРИМЕНЯЮТ sys.dm_exec_sql_text (qs.sql_handle) Св. ORDER total_elapsed_time / execution_count DESC;
- порядок пунктом закажет к самому высокому среднему прошедшему времени сначала.
HTH, Dan
Похоже, что в предыдущей версии Windows Server (до 2012) модуль PowerShell не был включен для управления Hyper-V. Вы можете использовать некоторые другие модули, такие как отказоустойчивую кластеризацию и т. Д., Но вы должны использовать сценарии WMI для внесения изменений в гипервизор.
В 2012 году эта проблема очень проста:
PS C: \> Get-VM –ComputerName Server1 | Where-Object {$ _. State –eq 'Running'}
Однако похоже, что существует библиотека с открытым исходным кодом , которая абстрагирует сценарии WMI и оставляет все в PowerShell. Я посмотрю на этот модуль сегодня вечером и посмотрю, смогу ли я заставить его делать то, что я хочу.
Спасибо Бобу за то, что хотя бы указал мне в правильном направлении.
Я бы сделал все внутри Powershell. Некоторое время назад я написал сценарий, чтобы сделать балансировку нагрузки для какого-то бедняги. Он вызвал некоторый код интерфейса командной строки для возврата состояния виртуальной машины и действовал соответствующим образом.
Вы сделаете то же самое: пусть Powershell вызовет оператор интерфейса командной строки (с помощью getstate) для получения состояния различных гостевых виртуальных машин. Если какой-либо из них не работает, отправьте электронное письмо по протоколу SMTP или используйте интерфейс командной строки для запуска виртуальной машины или что-то еще.
Запустите Powershell по расписанию с любым выбранным интервалом. Должен работать как шарм.