Совместная работа : Cisco ICM Logger

Определение и очистка заблокированного SQL-процесса

5 апреля 2016 - Машинный перевод
Другие версии: PDF-версия:pdf | Отзыв


Содержание


Введение

Этот документ предоставляет метод, чтобы определить и удалить процессы Microsoft SQL, которые блокируют другие процессы в Cisco Intelligent Contact Management (ICM) система. Важно определить процессы SQL, которые блокируют другие процессы, потому что это продвигает иллюзию, что другие процессы "зависнуты". Фактически, процессы не "зависнуты", но просто ждут ресурсов, которые будут освобождены блокирующим процессом.

Предварительные условия

Требования

Компания Cisco рекомендует предварительно ознакомиться со следующими предметами:

  • Архитектура базы данных ICM Cisco

  • Архитектура создания отчетов ICM Cisco

  • Служебные программы запросов Microsoft SQL (Анализатор запросов для версии 7.0 или 2000 Microsoft SQL Server или ISQL_W для версии 6.5 Microsoft SQL Server)

Используемые компоненты

Сведения, содержащиеся в данном документе, касаются следующих версий программного и аппаратного обеспечения:

  • Cisco ICM Version 4.6.2 или позже

  • Версия 6.5 Microsoft SQL Server или позже

Сведения, представленные в этом документе, были получены от устройств, работающих в специальной лабораторной среде. Все устройства, описанные в этом документе, были запущены с чистой (стандартной) конфигурацией. В рабочей сети необходимо изучить потенциальное воздействие всех команд до их использования.

Условные обозначения

Дополнительные сведения об условных обозначениях см. в документе Условные обозначения технических терминов Cisco.

Диагностируйте заблокированные процессы

Чтобы определить, блокирует ли процесс SQL других, сохраненная команда sp_who должна быть выполнена с Анализатором запросов (Версия 7.0 или 2000 Microsoft SQL Server) или ISQL_W (версия Microsoft SQL 6.5).

Когда команда sp_who выполнена, это показывает гипотетический результат.

Рис. 1: sp_who

BLOCK-1.gif

Если процесс имеет значение в столбце BlkBy, это указывает, что процесс заблокирован процессом, Server Process ID которого (SPID) является тем значением. В данном примере процесс с SPID 9 блокирует процесс с SPID 13. Поэтому это препятствует тому процессу завершать.

Определите источник заблокированного процесса

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

Несмотря на то, что возможно использовать столбцы HostName и Login в окне результатов sp_who для диагностирования источника процесса блокировки, в большинстве случаев это не могло бы предоставить всю необходимую подробную информацию того, что делает процесс. Один возможный метод для получения этой информации должен перейти к машине, которая является источником блокирующего процесса, и посмотрите, существует ли "зависнутый" ISQL_W, Анализатор запросов или Сеанс Enterprise Manager.

Альтернативный вариант должен посмотреть на часть запроса, который процесс выполняет для получения дополнительной информации об определении. Введите следующую команду:

dbcc
inputbuffer(<x>)

В синтаксисе предшествующей команды x указывает на SPID блокирующего процесса. При использовании данные от команды sp_who, показанной на рисунке 1, x, равняется 9. Когда команда dbcc inputbuffer выполнена, это показывает гипотетический результат.

Рис. 2: dbcc inputbuffer

/image/gif/paws/22156/BLOCK-2.gif

Хотя запрос может быть отображен с командой dbcc inputbuffer, намеченная цель этого запроса могла бы все еще быть неизвестной. Если это верно, и если HostName ясно не определен в результатах команды sp_who, выполните эти стандартные SQL и команды сетевого взаимодействия DOS для определения IP-адреса и имени хоста источника.

  1. Выполните этот SQL-запрос на SPID блокирующего процесса для получения MAC-адреса машины:

    select * from master.dbo.sysprocesses where
    spid = <y>
    

    В этом запросе y указывает на SPID блокирующего процесса и заменен 9 (см. рисунок 2).

    net_address столбец содержит MAC-адрес машины, которая соответствует указанному SPID.

  2. Выполните эти команды сетевого взаимодействия DOS в Окне DOS для определения IP-адреса, который соответствует этому MAC-адресу:

    arp
    -a
    

    Эта команда отображает IP-адрес всех связанных машин.

  3. Подойдите значение net_address от запроса sysprocesses (шаг 1) с соответствующим Физическим адресом в arp-a результаты (шаг 2). Это определяет, является ли IP-адресом, который соответствует Физическому адресу, IP-адрес машины, которая выполняет блокирующий процесс. Выполните эти команды сетевого взаимодействия DOS в Окне DOS для обнаружения соответствующего имени хоста этой машины:

    ping -a
    <IPaddress>
    
    

    В этой команде, <IPaddress> указывает на IP-адрес, определенный с arp-a команда.

    Когда у вас есть IP-адрес и/или имя хоста машины, которая выполняет блокирующий процесс, проще разыскать корневую проблему блока.

Закончите заблокированный процесс

Существует три метода для окончания блокирующего процесса:

  • Приблизьтесь к машине, которая выполняет блокирующий процесс, и определите приложение, которое соединяется с Microsoft SQL Server. Если приложение может быть закрыто, закройте его.

    Примечание: При закрытии приложения оно могло бы занять время. Это зависит от природы работы, сделанной приложением. Этот процесс также вызывает Microsoft SQL Server для выполнения, откат любого незафиксированного работают запущенные приложением. Это - самый безопасный метод для окончания незаконного процесса.

  • Уничтожьте блокирующий процесс с этой командой SQL:

    kill
    <z>
    
    

    В этой команде <z> является SPID блокирующего процесса.

    caution Внимание.  : Команда уничтожения очень опасный подход для очистки блокирующего процесса, потому что это может потенциально повредить базу данных SQL, если блокирующий процесс выполняет обновление базы данных. Команда уничтожения может также занять долгое время, чтобы завершить, если блокирующий процесс выполнил большую работу, которую должен отменить процесс уничтожения (откатывают). Сошлитесь на Книги SQL онлайн для получения дополнительной информации о команде уничтожения. Это должно быть включено с носителями с программой установки Microsoft SQL Server.

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

    Примечание: Как с параметром командной строки уничтожения, это очень опасный подход для очистки блокирующего процесса, потому что приложение, которое связано с Microsoft SQL Server, не закрыто чисто.

Связанные обсуждения сообщества поддержки Cisco

В рамках сообщества поддержки Cisco можно задавать и отвечать на вопросы, обмениваться рекомендациями и совместно работать со своими коллегами.


Дополнительные сведения