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

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

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

Откуда: 010100
Сообщений: 6501
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

Откуда: Москва
Сообщений: 9786
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
Сообщений: 6501
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
Сообщений: 6501
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

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

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

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

Откуда: Moscow
Сообщений: 31912
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]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
ariy85
Member

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

южно.. не все так просто. даже из гаубицы сервер расстреливали
2 фев 16, 07:24    [18759536]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
ariy85
Member

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

спасибо за решение
2 фев 16, 07:26    [18759537]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
ariy85
Member

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

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

Откуда:
Сообщений: 104751
ariy85
мне бы очень хотелось признать криворукость программиста,
но без пруфов, нет дела

Т.е. это ваша обязанность искать доказательства ?
Вы у них тетстерами работаете что ли ?

ariy85
да и не только я, но и наш отдел кадров.

О Боже, отдел кадров в роли тестеров и админов !

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

Совет переустановить сервер вы нашли в гугле, на форуме или в документации ?
2 фев 16, 09:20    [18759752]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
Zandr
Member

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

Если есть возможность доступа к базе (TeamViewer какой-нить) - или бэкап какой скинуть можете - давайте попробуем посмотреть / исправить.
Что-то я по дельфе соскучился...
Скайп: r u zandr - без пробелов
2 фев 16, 10:07    [18759982]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4454
ariy85
мне бы очень хотелось признать криворукость программиста, но без пруфов, нет дела.

Дело не ваших желаниях, а в способах получения результата.
Хороший программист или нет - это уже не важно!
Но пытаясь найти "потерянный кошелек" не тем, где потерял, а под фонарем, "где светлее" вы зря тратите время.

ariy85
с SQLом переделал уже все что можно

Что например?
Профайлер запускали?
Планы запросов строили?
Блокировки анализировали?
Показания счетчиков производительности снимали?

И если после этого у вас остались вопросы, то рискну предположить, что все, что вы сделали с SQL это запустили Management Studio, вздохнули и сказали "Что же ты с**а, тормозишь?" Извините, если что...
2 фев 16, 10:41    [18760200]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
Adx
Guest
ariy85
alexeyvg,

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


Это называется так:
"Фарами моргал? Колеса пинал? Ну ... тогда не знаю ..."

Вам нужен специалист по базам данных.
Ваш программист, очевидно, таковым не является, хотя и написал вроде как какой-то запрос.
Ответ "виноват сервер" - это не о чем. Можно было сказать - виновата сеть. Кабели бы стали перепрокладывать?
Пусть отдел кадров не занимается ерундой, а найдет человека (возможно дополнительно), который умеет писать код под SQL и умеет делать оптимизацию БД. Индексы, настройки и пр.
2 фев 16, 10:55    [18760286]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
ariy85
Member

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

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

Откуда:
Сообщений: 104751
ariy85
ну во время кризиса мы кем тут только не работаем..

И поэтому вы решили тут публиковать онлайн дневник со всеми подробностями ?
Извините, но это неинтересно.
Лучше на какой-нибудь сайт "реальных историй"
2 фев 16, 15:12    [18762410]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
ariy85
мне бы очень хотелось признать криворукость программиста, но без пруфов, нет дела

Вам уже на запрос указали... Неужели его сложно выполнить и посмотреть за сколько он отрабатывает и что возвращает. Сей форум для решения проблем. Вам на них уже многократно обращали внимание. Но Вы упорно игнорируете, что нет тела нет дела. Так к чему писать о проблеме и отвлекать людей. Спасибо.
2 фев 16, 15:18    [18762437]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
Uridian
Member

Откуда: Lobnya
Сообщений: 239
ariy85
Прикладываю исходники утилиты(Delphi)

Для выгрузки больших объёмов данных рекомендуется использовать серверный курсор, чтобы предотвратить кэширование данных в адресном пространстве клиентской программы, и следовательно избежать дорогостоящих операций выделения памяти. В вашем случае, у ADO-компонентов qry1 и qry2 следует установить два свойства CursorLocation = clUseServer, CursorType = ctOpenForwardOnly.
2 фев 16, 17:28    [18763409]     Ответить | Цитировать Сообщить модератору
 Re: Софт по выгрузке данных с MS SQL зависает на выгрузке  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31912
ariy85
мне бы очень хотелось признать криворукость программиста,
но без пруфов, нет дела.
Я же вам написал.

Программа не работает? Программист криворукий.
Какие ещё нужны доказательства?

Зачем вам нужно искать конкретные недостатки, ошибки в коде, это что, ваша обязанность по договору с программистом?

Если бы у вас были специалисты, можно было бы программисту помочь.
Но если их нет, достаточно сказать "не работает, вот, запускаем так, на экране вот это, разбирайся"
2 фев 16, 21:13    [18764371]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Microsoft SQL Server Ответить