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

Откуда:
Сообщений: 21
Дано: ms sql 2000 на котором вращается складская база. Есть скрипт запускаемый вручную написанный очень давно.

update SCL_SROK
set pprim=(
SELECT min(PPRIM)
FROM SCL_SROK b
WHERE (b.ID_SCLAD = 23) AND (b.PPRIM IS NOT NULL) AND (b.ARTICUL = scl_srok.ARTICUL) AND (b.PARTIA = scl_srok.PARTIA) and b.srok=scl_srok.srok
)
WHERE (ID_SCLAD = 20) and pprim is null

Данный скрипт отлично работал долгие годы. Последнее время стал работать со сбоями. Выполняется успешно а цифры в нужной графе то появляется то нет. Приходилось запускать много раз. А теперь и вовсе перестали появляться. Если выполнить через квери аналайзер пишет что 15152 записи затронуты и все. Цифры в целевом месте не появляются. Нет ли среди вас адекватных специалистов способных подсказать бедному юзеру возможную причину столь странного поведения ?
23 май 17, 17:46    [20505302]     Ответить | Цитировать Сообщить модератору
 Re: Гуру помогите лоху разобраться.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Vlad2222,

одно из двух
23 май 17, 17:50    [20505327]     Ответить | Цитировать Сообщить модератору
 Re: Гуру помогите лоху разобраться.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36686
Тема загадочного "целевого места" не раскрыта.
23 май 17, 17:59    [20505372]     Ответить | Цитировать Сообщить модератору
 Re: Гуру помогите лоху разобраться.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Vlad2222,
ну ради интереса посмотрите, что оно вам обновлять собирается, скорее всего там всё NULL... или нет :)
SELECT 
pprim=(
SELECT min(PPRIM)
FROM SCL_SROK b
WHERE (b.ID_SCLAD = 23) AND (b.PPRIM IS NOT NULL) AND (b.ARTICUL = scl_srok.ARTICUL) AND (b.PARTIA = scl_srok.PARTIA) and b.srok=scl_srok.srok
)
FROM SCL_SROK
WHERE (ID_SCLAD = 20) and pprim is null
23 май 17, 18:02    [20505387]     Ответить | Цитировать Сообщить модератору
 Re: Гуру помогите лоху разобраться.  [new]
Vlad2222
Member

Откуда:
Сообщений: 21
TaPaK,
Спасибо вам добрая душа что откликнулись : ) Как вы и предсказывали там, на сколько я просмотрел 15000 записей, действительно все нуль.
23 май 17, 18:13    [20505414]     Ответить | Цитировать Сообщить модератору
 Re: Гуру помогите лоху разобраться.  [new]
Lepsik
Member

Откуда: glubinka
Сообщений: 4257
Vlad2222
Дано: ms sql 2000 на котором вращается складская база. Есть скрипт запускаемый вручную написанный очень давно.

update SCL_SROK
set pprim=(
SELECT min(PPRIM)
FROM SCL_SROK b
WHERE (b.ID_SCLAD = 23) AND (b.PPRIM IS NOT NULL) AND (b.ARTICUL = scl_srok.ARTICUL) AND (b.PARTIA = scl_srok.PARTIA) and b.srok=scl_srok.srok
)
WHERE (ID_SCLAD = 20) and pprim is null


---
SELECT min(PPRIM)
FROM SCL_SROK b
WHERE (b.ID_SCLAD = 23) AND (b.PPRIM IS NOT NULL) AND (b.ARTICUL = scl_srok.ARTICUL) AND (b.PARTIA = scl_srok.PARTIA) and b.srok=scl_srok.srok
)

запускайте по частям чтобы проверить если данные на складе 23 а потом на складе 20 - куда оно кладется.


SELECT  min(PPRIM) FROM SCL_SROK b WHERE     (b.ID_SCLAD = 23) AND (b.PPRIM IS NOT NULL) AND (b.ARTICUL = scl_srok.ARTICUL) AND (b.PARTIA = scl_srok.PARTIA) and b.srok=scl_srok.srok

SELECT  min(PPRIM) FROM SCL_SROK b WHERE     (b.ID_SCLAD = 23) AND (b.PPRIM IS NOT NULL) AND (b.ARTICUL = scl_srok.ARTICUL) AND (b.PARTIA = scl_srok.PARTIA)

SELECT  min(PPRIM) FROM SCL_SROK b WHERE     (b.ID_SCLAD = 23) AND (b.PPRIM IS NOT NULL) AND (b.ARTICUL = scl_srok.ARTICUL) 

SELECT  min(PPRIM) FROM SCL_SROK b WHERE     (b.ID_SCLAD = 23) AND (b.PPRIM IS NOT NULL)

SELECT  min(PPRIM) FROM SCL_SROK b WHERE     (b.ID_SCLAD = 23)


Если первый селект вернет результат - нету строки с 20 складом.

Если первый селект не вернет результат - наидте строку с результатом и поищите почему предьидущий результат не дал данных
24 май 17, 02:13    [20506191]     Ответить | Цитировать Сообщить модератору
 Re: Гуру помогите лоху разобраться.  [new]
Vlad2222
Member

Откуда:
Сообщений: 21
Lepsik, последние три условия "and" возвращают ошибку:
The column prefix 'scl_srok' does not match with a table name or alias name used in the query.

Значение возвращает только строка с (b.ID_SCLAD = 23) AND (b.PPRIM IS NOT NULL)
24 май 17, 12:16    [20507292]     Ответить | Цитировать Сообщить модератору
 Re: Гуру помогите лоху разобраться.  [new]
iap
Member

Откуда: Москва
Сообщений: 46951
Vlad2222
Lepsik, последние три условия "and" возвращают ошибку:
The column prefix 'scl_srok' does not match with a table name or alias name used in the query.

Значение возвращает только строка с (b.ID_SCLAD = 23) AND (b.PPRIM IS NOT NULL)
Наверно, у вас регистрозависимый COLLATE базы.
Точно пишите везде имена объектов с учётом регистра букв.
24 май 17, 12:25    [20507356]     Ответить | Цитировать Сообщить модератору
 Re: Гуру помогите лоху разобраться.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
iap
Vlad2222
Lepsik, последние три условия "and" возвращают ошибку:
The column prefix 'scl_srok' does not match with a table name or alias name used in the query.

Значение возвращает только строка с (b.ID_SCLAD = 23) AND (b.PPRIM IS NOT NULL)
Наверно, у вас регистрозависимый COLLATE базы.
Точно пишите везде имена объектов с учётом регистра букв.

не, первый запрос же проходит...
либо алиас b убрать либо scl_srok заменить на алиас
24 май 17, 12:28    [20507378]     Ответить | Цитировать Сообщить модератору
 Re: Гуру помогите лоху разобраться.  [new]
iap
Member

Откуда: Москва
Сообщений: 46951
TaPaK
iap
пропущено...
Наверно, у вас регистрозависимый COLLATE базы.
Точно пишите везде имена объектов с учётом регистра букв.

не, первый запрос же проходит...
либо алиас b убрать либо scl_srok заменить на алиас
Не вдавался в подробности, извините.
Но всё равно, если уж таблица называется SCL_SROK, то так она и должна везде именоваться.
Из принципа, ради порядка!
А не scl_srok
24 май 17, 12:31    [20507399]     Ответить | Цитировать Сообщить модератору
 Re: Гуру помогите лоху разобраться.  [new]
Vlad2222
Member

Откуда:
Сообщений: 21
TaPaK,
Регистры не влияют, да..
То есть майкрософт поставил какое то обновление сервака? Синтаксис который раньше проходил теперь не проходит ? Какой то серсис пак либо стоит либо не стоит ?
Как мне модифицировать запрос что бы он работал, не сможете ли подсказать ?
24 май 17, 13:17    [20507659]     Ответить | Цитировать Сообщить модератору
 Re: Гуру помогите лоху разобраться.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Vlad2222
TaPaK,
Регистры не влияют, да..
То есть майкрософт поставил какое то обновление сервака? Синтаксис который раньше проходил теперь не проходит ? Какой то серсис пак либо стоит либо не стоит ?
Как мне модифицировать запрос что бы он работал, не сможете ли подсказать ?

какой именно запрос. Определитесь что не так у вас с условиями, MS тут точно не причём
24 май 17, 13:20    [20507675]     Ответить | Цитировать Сообщить модератору
 Re: Гуру помогите лоху разобраться.  [new]
Vlad2222
Member

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

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

Как мне теперь написать ровно такой же по действию скрипт что бы заработал?
24 май 17, 13:30    [20507741]     Ответить | Цитировать Сообщить модератору
 Re: Гуру помогите лоху разобраться.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Vlad2222
TaPaK,

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

Как мне теперь написать ровно такой же по действию скрипт что бы заработал?

ой нет... потратьте немного денег, позовите программиста
24 май 17, 13:32    [20507762]     Ответить | Цитировать Сообщить модератору
 Re: Гуру помогите лоху разобраться.  [new]
Vlad2222
Member

Откуда:
Сообщений: 21
TaPaK,
Спасибо что хоть попытались помочь. Подожду может у кого нибудь еще возникнут версии. Пока пойду убивать сервиспаки.. может заработает.
24 май 17, 13:57    [20507943]     Ответить | Цитировать Сообщить модератору
 Re: Гуру помогите лоху разобраться.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Vlad2222
TaPaK,
Спасибо что хоть попытались помочь. Подожду может у кого нибудь еще возникнут версии. Пока пойду убивать сервиспаки.. может заработает.

астановитесь!(с)

у вас в складе 23 нет ARTICUL PARTIA srok которые есть в складе 20
24 май 17, 14:03    [20507970]     Ответить | Цитировать Сообщить модератору
 Re: Гуру помогите лоху разобраться.  [new]
Vlad2222
Member

Откуда:
Сообщений: 21
TaPaK,
Большое спасибо за помошь.
Клиентское ПО видит много совпадений по артикулу партии и сроку, на обоих складах, оно не перепрограммировалось тоже и не может вдруг начать читать другие ячейки. Не представляю как такое может быть : (
24 май 17, 14:44    [20508129]     Ответить | Цитировать Сообщить модератору
 Re: Гуру помогите лоху разобраться.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Vlad2222,
мыши плакали, кололись...
результат покажите
SELECT TOP 1
ARTICUL,PARTIA,srok,
pprim=(
SELECT min(PPRIM)
FROM SCL_SROK b
WHERE (b.ID_SCLAD = 23) AND (b.PPRIM IS NOT NULL) AND (b.ARTICUL = scl_srok.ARTICUL) AND (b.PARTIA = scl_srok.PARTIA) and b.srok=scl_srok.srok
)
FROM SCL_SROK
WHERE (ID_SCLAD = 20) and pprim is null
24 май 17, 14:58    [20508192]     Ответить | Цитировать Сообщить модератору
 Re: Гуру помогите лоху разобраться.  [new]
Vlad2222
Member

Откуда:
Сообщений: 21
TaPaK,
вернуло одну строку, не знаю как сюда скопировать но вот с шапкой

00-00006636 #1783=РАСКРОЙ+ 2016-12-02 00:00:00.000 NULL
24 май 17, 15:30    [20508314]     Ответить | Цитировать Сообщить модератору
 Re: Гуру помогите лоху разобраться.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Vlad2222
TaPaK,
вернуло одну строку, не знаю как сюда скопировать но вот с шапкой

00-00006636 #1783=РАСКРОЙ+ 2016-12-0 00:00:00.000 NULL


ну а теперь
только подставьте нормально...
SELECT * FROM SCL_SROK  WHERE b.ID_SCLAD = 23 AND ARTICUL = *значение* AND PARTIA = *значение* srok IS NULL 

ну и srok NULL.... ладно покажите результат, возможно SET ANSI_NULLS ON/OFF сменился
24 май 17, 15:35    [20508332]     Ответить | Цитировать Сообщить модератору
 Re: Гуру помогите лоху разобраться.  [new]
Vlad2222
Member

Откуда:
Сообщений: 21
TaPaK,
Уважаемый гуру, я не знаю sql : ( и не знаю что куда нормально подставить...
24 май 17, 15:44    [20508359]     Ответить | Цитировать Сообщить модератору
 Re: Гуру помогите лоху разобраться.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Vlad2222
TaPaK,
Уважаемый гуру, я не знаю sql : ( и не знаю что куда нормально подставить...

позовите того кто знает, так толку не будет
24 май 17, 15:52    [20508408]     Ответить | Цитировать Сообщить модератору
 Re: Гуру помогите лоху разобраться.  [new]
Vlad2222
Member

Откуда:
Сообщений: 21
TaPaK,
Если бы мог уже позвал бы.. Ладно спасибо вам большое за потраченное время. идею с ANSI пойду проверю...
24 май 17, 15:59    [20508460]     Ответить | Цитировать Сообщить модератору
 Re: Гуру помогите лоху разобраться.  [new]
Vlad2222
Member

Откуда:
Сообщений: 21
TaPaK,
Ничего не дали сервис паки : ( А вы не подскажете как вообще селект с условием is not null может выдать null ?
24 май 17, 19:24    [20509201]     Ответить | Цитировать Сообщить модератору
 Re: Гуру помогите лоху разобраться.  [new]
Romka-Fes
Member

Откуда: Kyiv
Сообщений: 460
Vlad2222
TaPaK,
Ничего не дали сервис паки : ( А вы не подскажете как вообще селект с условием is not null может выдать null ?


"and pprim is null" - где тут is NOT null???
24 май 17, 21:36    [20509432]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить