Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
ariy85
Member

Откуда:
Сообщений: 16
Ребята,
Очень нужна помощь программистов-sqlщиков.
У нас в офисе стоит система контроля доступа IDTECK и есть
небольшая утилитка делающая выгрузку с MS SQL 2008.
вначале, когда только поставили контроль доступа, все работало
отлично. Но потом, когда БД заполнилась записями, утилитка
намертво зависает после получения определенного количества
отчетов. Программист написавший утилитку утверждает что проблема
в SQL, но напрягает то, что нагрузка на процессор и оперативку при работе утилиты
даже в пиковые часы(обеденное время, утро и вечер) не больше 15-20%.
неоднократно переустанавливали SQL, чистили лог-файлы(ldf), даже
от безысходности переустановили сервер с предварительным дампом базы.

Прикладываю исходники утилиты(Delphi)

помогите пожалуйста, кто может

К сообщению приложен файл (Source.zip - 16Kb) cкачать
1 фев 16, 08:59    [18754431]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4424
ariy85
Программист написавший утилитку утверждает что проблема
в SQL

Кто-бы сомневался!
А почему бы Вам не воспользоваться штатными средствами SQL Server?
1 фев 16, 09:11    [18754460]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6461
ariy85,

Необходимо обновить версию.
1 фев 16, 09:13    [18754464]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
Glory
Member

Откуда:
Сообщений: 104751
ariy85
Программист написавший утилитку утверждает что проблема
в SQL

Хорошая логика - зависает его программа, а проблема в SQL.

ariy85
Прикладываю исходники утилиты(Delphi)

Здесь форум по MSSQL, а не по Delphi.
1 фев 16, 09:16    [18754474]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
invm
Member

Откуда: Москва
Сообщений: 9725
ariy85
Программист написавший утилитку утверждает что проблема
в SQL
Конечно в SQL. Ведь его код безупречен. Безупречен настолько, что об обработке ошибок можно даже не задумываться...
1 фев 16, 10:55    [18754904]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
iiyama
Member

Откуда:
Сообщений: 642
ariy85,
начните с этого
1 фев 16, 13:09    [18755887]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
Программист 3 поколения
Member

Откуда:
Сообщений: 103
ariy85
вначале ... все работало отлично.

ariy85
Но потом, когда БД заполнилась записями, утилитка
намертво зависает...


Так может дело в неправильных индексах или их отсутсвии?
1 фев 16, 14:02    [18756371]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
ariy85
Member

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

Думаете, если обновить до 2012 все исправится?
1 фев 16, 16:07    [18757330]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6461
ariy85
Siemargl,

Думаете, если обновить до 2012 все исправится?


Версию программиста вам надо обновить =)

Говнокод классический обыкновенный.
1 фев 16, 16:08    [18757335]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
ariy85
Member

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

интересная штучка. благодарю
1 фев 16, 16:08    [18757342]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6461
ariy85,

но программа при ошибках в лог пишет - см. что там
1 фев 16, 16:09    [18757346]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
Glory
Member

Откуда:
Сообщений: 104751
ariy85
Думаете, если обновить до 2012 все исправится?

Да-да
Купите SQL2014 Enterprise на 32 ядра и все сразу починится. Само.
1 фев 16, 16:09    [18757348]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
ariy85
Member

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

ну уж кого начальство привело..
если б сам разбирался в коде. метод гуглинга плодов не принес..
1 фев 16, 16:09    [18757349]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
ariy85
Member

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

зато бухгалтерия сразу поломается :)
1 фев 16, 16:11    [18757366]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
ariy85
Member

Откуда:
Сообщений: 16
Программист 3 поколения,

проверяли. делали реиндексацию и перестойку.
проблема не исчезла после этого
1 фев 16, 16:15    [18757388]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
Glory
Member

Откуда:
Сообщений: 104751
ariy85
проверяли. делали реиндексацию и перестойку.
проблема не исчезла после этого

Вот это еще сделайте
1 фев 16, 16:17    [18757405]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Скажите спасибо тому "доброму человеку" который писал Вашу программу. Во первых, если где-то что-то зависает то надо смотреть на причину. А для этого хотя бы научиться пользоваться профайлером или XEvent.

Отловить примерно вот такой запрос который отсылает Ваша программа:

SELECT CARDEVENTDATE,
       CARDEVENTTIME,
       CUSTOM2,
       AREANAME,
       READERID
FROM T_CARDEVENT,
     T_PERSON,
     T_DOOR,
     T_AREA
WHERE (T_CARDEVENT.PORTID = '61' OR T_CARDEVENT.PORTID = '62'
		OR T_CARDEVENT.PORTID = '63' OR T_CARDEVENT.PORTID = '28'
		OR T_CARDEVENT.PORTID = '64' OR T_CARDEVENT.PORTID = '66'
		OR T_CARDEVENT.PORTID = '67' OR T_CARDEVENT.PORTID = '68'
		OR T_CARDEVENT.PORTID = '69' OR T_CARDEVENT.PORTID = '70'
		OR T_CARDEVENT.PORTID = '41' OR T_CARDEVENT.PORTID = '45' 
		OR T_CARDEVENT.PORTID = '12' OR T_CARDEVENT.PORTID = '13'
		OR T_CARDEVENT.PORTID = '15' OR T_CARDEVENT.PORTID = '18'
		OR T_CARDEVENT.PORTID = '55' OR T_CARDEVENT.PORTID = '30' OR T_CARDEVENT.PORTID = '31')
    AND (
		   (CARDEVENTDATE = @twodaysagodate)
		OR (CARDEVENTDATE = @yesterdaydate)
		OR (CARDEVENTDATE = @todaydate AND CARDEVENTTIME BETWEEN @timefrom AND @timeto)
	)
    AND T_CARDEVENT.PERSONID = @personid
    AND T_PERSON.PERSONID = T_CARDEVENT.PERSONID
    AND T_CARDEVENT.PORTID = T_DOOR.PORTID
    AND T_AREA.AREACODE = T_DOOR.DOORAREA
ORDER BY CARDEVENTDATE, CARDEVENTTIME ASC


Проанализировать план запроса и посмотреть за сколько он выполняется. Если с ним траблов нет, то бить по рукам виноватого.

Теперь по поводу запроса. Это индусский пипец... Можно же проще все написать:

SELECT CARDEVENTDATE,
       CARDEVENTTIME,
       CUSTOM2,
       AREANAME,
       READERID
FROM T_CARDEVENT с
JOIN T_PERSON p ON p.PERSONID = с.PERSONID
JOIN T_DOOR d ON с.PORTID = d.PORTID
JOIN T_AREA a ON a.AREACODE = d.DOORAREA
WHERE с.PORTID IN (
	'61', '62', '63', '28', '64', '66', '67', '68', '69',
	'70', '41', '45', '12', '13', '15', '18', '55', '30', '31')
    AND (
		   CARDEVENTDATE IN (@twodaysagodate, @yesterdaydate)
		OR (CARDEVENTDATE = @todaydate AND CARDEVENTTIME BETWEEN @timefrom AND @timeto)
	)
    AND с.PERSONID = @personid
ORDER BY CARDEVENTDATE, CARDEVENTTIME ASC 


Время и план выполнения в студию.
1 фев 16, 16:21    [18757437]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
ariy85
Member

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

спасибо за детальный ответ. попробуем и отпишусь
1 фев 16, 16:39    [18757589]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
ariy85
Member

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

серверу 2 месяца. да и не просто компьютер, а hp-шный блейд
1 фев 16, 16:41    [18757600]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
Glory
Member

Откуда:
Сообщений: 104751
ariy85
серверу 2 месяца. да и не просто компьютер, а hp-шный блейд

Ну тогда да.
По всему выходит, что ваш прграммист прав и проблема исключительно в SQL Server-е.
Предлагаю мигрировать на Oracle.
1 фев 16, 16:43    [18757611]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
ariy85
Member

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

проблема в том что корейский софт не работает с Oracle
1 фев 16, 16:47    [18757641]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
Glory
Member

Откуда:
Сообщений: 104751
ariy85
Glory,

проблема в том что корейский софт не работает с Oracle

Какой же проблемный этот SQL
Заставил программистов написать такой прекрасный код, а теперь ни выполнять его не хочет, ни мигрировать не может
1 фев 16, 16:53    [18757688]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4424
ariy85
Glory,

проблема в том что корейский софт не работает с Oracle

Северо или южнокорейский?
Если КНДР, то нужно фото Ким Чен Ына на рабочий стол ставить и все заработает!
1 фев 16, 16:57    [18757726]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31869
ariy85
Но потом, когда БД заполнилась записями, утилитка
намертво зависает после получения определенного количества
отчетов. Программист написавший утилитку утверждает что проблема
в SQL, но напрягает то, что нагрузка на процессор и оперативку при работе утилиты
даже в пиковые часы(обеденное время, утро и вечер) не больше 15-20%.
неоднократно переустанавливали SQL, чистили лог-файлы(ldf), даже
от безысходности переустановили сервер с предварительным дампом базы.
Когда эти "простопрограммисты" начинают перекладывать собственную криворукость на всех проходящих рядом, хорошо помогает вопрос - а собственно где именно "проблема в SQL"?
Пусть ткнёт вас в трейс, покажет вам свои гениальные и безупречно правильные запросы, которые гадкий SQL искажает и не хочет выполнять.

И я вообще не понимаю, чего он хочет?
Что бы:
- признали его ошибку в выборе неподходящей СУБД для разработки продукта,
- или признали его ошибку в том, что он согласился написать утилитку, которую написать теоретически невозможно для противного SQL Server,
- или признали его ошибку в том, что он не смог нормально разработать утилитку?
1 фев 16, 18:49    [18758305]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
ariy85
неоднократно переустанавливали SQL, чистили лог-файлы(ldf), даже
от безысходности переустановили сервер с предварительным дампом базы.
Если это действительно проблема в MS SQL, то у вас есть два варианта, либо научится пользоваться хотя бы SQL Profiler, либо нанять специалиста. Потому что ваши танцы с бубном никакого отношения к решению проблемы не умеют.

Еще можно поставить Who Is Active и посмотреть что происходит в моменты когда программа зависает.
1 фев 16, 23:09    [18759175]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить