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

Откуда: Одесса
Сообщений: 1102
MS SQL Server 2008 Vers. 10.50.1617

я выполняю сложный запрос который длится 30-40 Минут в Таблице А с 80 000 000 записей.

Мой коллега выполняет простые короткие запросы длящиеся 2-3 Минуты в этой же таблице.

Если я стартую свой запрос, то коллега не может выполнять свои запросы. Сервер базы данных как бы висит.

Если я прерываю свой запрос, запросы коллеги тут же выполняются дальше.

Вопрос: Можно ли настроить сервер БД так, чтоб в случае запроса выполняющегося более 4-х Минут он прерывался и не блокировал больше сервер?

Спасибо.

П.С.

Таймаутом в настройках "Сервер-Свойства" пробовал. Установил 240 Секунд. Почему то не помогает. Запрос все равно выполняется дальше.
Рискну предположить что никакой блокировки нет, просто другие запросы стоят в очереди и ждут пока выполнится мой.
как заставить сервер обрывать такие запросы автоматически и обрабатывать следующие?
21 ноя 11, 16:32    [11633134]     Ответить | Цитировать Сообщить модератору
 Re: Как ограничить время выполнения удаленных SQL запросов.  [new]
Glory
Member

Откуда:
Сообщений: 104751
sp_configure - remote query timeout
21 ноя 11, 16:38    [11633199]     Ответить | Цитировать Сообщить модератору
 Re: Как ограничить время выполнения удаленных SQL запросов.  [new]
Glory
Member

Откуда:
Сообщений: 104751
student-uni
Если я стартую свой запрос, то коллега не может выполнять свои запросы. Сервер базы данных как бы висит.

Наверное не сервер висит, а ваш запрос заблокировал таблицы, которые нужны другим
21 ноя 11, 16:39    [11633212]     Ответить | Цитировать Сообщить модератору
 Re: Как ограничить время выполнения удаленных SQL запросов.  [new]
Glory
Member

Откуда:
Сообщений: 104751
student-uni
Рискну предположить что никакой блокировки нет, просто другие запросы стоят в очереди и ждут пока выполнится мой.

Т.е. сервер настроен на выполнение только одного запроса в один момент времени ?
21 ноя 11, 16:40    [11633223]     Ответить | Цитировать Сообщить модератору
 Re: Как ограничить время выполнения удаленных SQL запросов.  [new]
student-uni
Member

Откуда: Одесса
Сообщений: 1102
Glory
student-uni
Если я стартую свой запрос, то коллега не может выполнять свои запросы. Сервер базы данных как бы висит.

Наверное не сервер висит, а ваш запрос заблокировал таблицы, которые нужны другим


Совершенно верно. Неправильно выразился. sp_configure - remote query timeout поможет?

Glory
student-uni
Рискну предположить что никакой блокировки нет, просто другие запросы стоят в очереди и ждут пока выполнится мой.

Т.е. сервер настроен на выполнение только одного запроса в один момент времени ?


Глупость конечно. Но выглядит так. Хотя блокировка таблиц хорошо обьясняет картину.
21 ноя 11, 16:46    [11633290]     Ответить | Цитировать Сообщить модератору
 Может ли клиент сам выставить remote query timeout для своего sql запроса?  [new]
student-uni
Member

Откуда: Одесса
Сообщений: 1102
Может ли клиент сам выставить remote query timeout для своего sql запроса?

И если да, то как проследить с каким Таймаутом стартовал запрос?

Профайлер? Где в профайлере?

Спасибо
21 ноя 11, 17:42    [11633814]     Ответить | Цитировать Сообщить модератору
 Re: Как ограничить время выполнения удаленных SQL запросов.  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
student-uni
MS SQL Server 2008 Vers. 10.50.1617

я выполняю сложный запрос который длится 30-40 Минут в Таблице А с 80 000 000 записей.

Мой коллега выполняет простые короткие запросы длящиеся 2-3 Минуты в этой же таблице.

Если я стартую свой запрос, то коллега не может выполнять свои запросы. Сервер базы данных как бы висит.

Если я прерываю свой запрос, запросы коллеги тут же выполняются дальше.

Вопрос: Можно ли настроить сервер БД так, чтоб в случае запроса выполняющегося более 4-х Минут он прерывался и не блокировал больше сервер?

Спасибо.

П.С.

Таймаутом в настройках "Сервер-Свойства" пробовал. Установил 240 Секунд. Почему то не помогает. Запрос все равно выполняется дальше.
Рискну предположить что никакой блокировки нет, просто другие запросы стоят в очереди и ждут пока выполнится мой.
как заставить сервер обрывать такие запросы автоматически и обрабатывать следующие?


интересно былобы увидеть Ваш запрос, запрос коллеги, скрипты таблиц + планы выполнения.
22 ноя 11, 10:03    [11635841]     Ответить | Цитировать Сообщить модератору
 Re: Как ограничить время выполнения удаленных SQL запросов.  [new]
Volochkova
Member

Откуда:
Сообщений: 2321
student-uni,

Если вы выполняете запрос типа

Select * From [RemoteServerName].[Mydatabase].[dbo].MyTable 
А если еще и

Select t.* From [RemoteServerName].[Mydatabase].[dbo].MyTable t inner join [RemoteServerName].[Mydatabase].[dbo].MyTable t2 on t1.ID = t2.t1ID   

то серверу точно плохо.
Я бы рекомендовала Вам использовать
автор
Select
*
From
OpenQuery([RemoteServerName], 'Select t.* From [Mydatabase].[dbo].MyTable t (nolock) inner join [Mydatabase].[dbo].MyTable t2 (Nolock) on t1.ID = t2.t1ID '


1. Можно использовать (nolock) . Не есть хорошо, но зато не вешается сервер.
2. Так более правильно. Если кратко.
22 ноя 11, 10:15    [11635915]     Ответить | Цитировать Сообщить модератору
 Re: Как ограничить время выполнения удаленных SQL запросов.  [new]
Volochkova
Member

Откуда:
Сообщений: 2321
Select
*
From
OpenQuery([RemoteServerName], 'Select t.* From [Mydatabase].[dbo].MyTable t (nolock) inner join [Mydatabase].[dbo].MyTable t2 (Nolock) on t1.ID = t2.t1ID ')

Закрывающая скобочка потерялась.
22 ноя 11, 10:16    [11635923]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить