Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Множественные FETCH API_CURSOR с разных клиентов  [new]
a-v-mikhailov
Member

Откуда:
Сообщений: 51
Коллеги, добрый день

Странная ситуация на рабочей базе. Прошу совета, что делать

Днем возникли и висят с десяток FETCH API_CURSOR, причем с разных клиентов (см картинку), причем на один курсор

В курсор заглядывал через

SELECT c.session_id, c.properties, c.creation_time, c.is_open, t.text
FROM sys.dm_exec_cursors (номерПроцесса) c
CROSS APPLY sys.dm_exec_sql_text (c.sql_handle) t


Да, там есть один длинный запрос с рабочей базы, и он одинаковый

Но во-первых, не такой уж он и длинный чтобы идти неск часов. Во-вторых, как к курсору присоединились иные клиенты?

И самое главное как это остановить? Такое на базе впервые

Блокировок нет

Microsoft SQL Server 2008 (SP4) - 10.0.6535.0 (X64) Apr 17 2015 19:49:03 Copyright (c) 1988-2008 Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (VM)

К сообщению приложен файл. Размер - 142Kb
18 окт 17, 16:04    [20879580]     Ответить | Цитировать Сообщить модератору
 Re: Множественные FETCH API_CURSOR с разных клиентов  [new]
o-o
Guest
какой-нибудь тул мониторинга?
автор
И самое главное как это остановить?

посмотрите логин исполнителя, заденайте ему VIEW SERVER STATE.
на sys.dm_exec_sql_text получит ошибку
18 окт 17, 16:19    [20879624]     Ответить | Цитировать Сообщить модератору
 Re: Множественные FETCH API_CURSOR с разных клиентов  [new]
msLex
Member

Откуда:
Сообщений: 7729
a-v-mikhailov,

Так, насколько я помню, работают стандартные "grid"-ы DAX-а
18 окт 17, 16:28    [20879661]     Ответить | Цитировать Сообщить модератору
 Re: Множественные FETCH API_CURSOR с разных клиентов  [new]
a-v-mikhailov
Member

Откуда:
Сообщений: 51
какой-нибудь тул мониторинга?


это рабочая OLTP, там профайлером мало что увидишь в куче ежесекундных запросов

И самое главное как это остановить?


я к тому что не убивать же такое количество процессов сверху вниз
хотя со стороны софта, которых работает с базой, все уже похоже отвалилось, там нет этих SPID

посмотрите логин исполнителя, заденайте ему VIEW SERVER STATE.
на sys.dm_exec_sql_text получит ошибку


логин софта в сторону MS SQL единый, это три AOS MS DAX 4.0
что это даст, не очень понимаю
18 окт 17, 16:31    [20879672]     Ответить | Цитировать Сообщить модератору
 Re: Множественные FETCH API_CURSOR с разных клиентов  [new]
o-o
Guest
a-v-mikhailov
что это даст, не очень понимаю

в смысле, что даст?
невозможно что-то выполнить, не имея на это прав.
отберете у него VIEW SERVER STATE,
при попытке выполнить свой курсор с sys.dm_exec_sql_text получит
Msg 297, Level 16, State 1, Line 4
The user does not have permission to perform this action.
18 окт 17, 16:51    [20879729]     Ответить | Цитировать Сообщить модератору
 Re: Множественные FETCH API_CURSOR с разных клиентов  [new]
a-v-mikhailov
Member

Откуда:
Сообщений: 51
o-o,
Возможно, я некорректно определил задачу. Я хотел бы прервать выполнение (закрыть?) именно для этого курсора FETCH API_CURSOR000000000019A9B0. Останавливать возможность использования курсоров со стороны MS DAX в базе MS SQL я не могу
18 окт 17, 17:07    [20879780]     Ответить | Цитировать Сообщить модератору
 Re: Множественные FETCH API_CURSOR с разных клиентов  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 49515
a-v-mikhailov
Я хотел бы прервать выполнение (закрыть?) именно для этого курсора FETCH API_CURSOR000000000019A9B0.

Зачем? Какой практический смысл закрытия недофетченного курсора?
19 окт 17, 13:18    [20882310]     Ответить | Цитировать Сообщить модератору
 Re: Множественные FETCH API_CURSOR с разных клиентов  [new]
o-o
Guest
правильно.
не надо вообще эти курсоры разводить, тогда не придется прибивать.
и вообще, зачем это какой-то софтине, если только она не состояние сервера мониторит,
права уровня сервера?
пускай довольствуется овнером в базе.
---
заодно проверите ошибкоустойчивость софтины.
не все курсоры упадут, а только вот эти самые.
соответственно, если прога написана хорошо,
она переживет ошибку без падения
автор
Останавливать возможность использования курсоров со стороны MS DAX в базе MS SQL я не могу

я вам и не предлагаю запрещать курсоры.
пусть хоть всю базу курсорами залопатит.
отвалятся лишь те, что лезут в DMV
19 окт 17, 14:07    [20882499]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить