Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Очень странный глюк SQL. Может быть уже кто-то с этим сталкивался
|
|||
|---|---|---|---|
|
#18+
Добрый день. Вчера столкнулась с очень странной проблемой. У меня есть Job, который запускает процедуру p_out. Внутри p_out запускается процедура p_calc. Процедура p_calc пишет данные в tbl_calc. Далее p_out пишет данные в несколько табличек out. Процедура p_calc ссылается на таблички out только в паре мест путем SELECT конкретно указанных полей. Я изменила структуру таблиц out, добавив в них дополнительную колонку и поменяла процедуру p_out. При попытке запуска Job вылетел со следующей ошибкой: имя столбца или число предоставленных значений не соответствует определению таблицы Казалось бы все просто, где-то в процедуре p_out, забыла что-то подправить, но тут началось самое интересно. При попытке запуска процедуры p_out в ManagementStudio выяснилось, что данная ошибка выскакивает именно при запуске процедуры p_calc внутри p_out. Далее попробовала запустить отдельно p_calc и она, о чудо, отработала без ошибок (как и должна была, т.к. изменения ее не касались вообще). Но самое странное произошло дальше. При повторном запуске p_out все отработало без проблем. На текущий момент решила проблему вылетания Jobа, путем запуска процедуры p_calc с пустыми параметрами перед запуском p_out, без этого процедура упорно вылетает по ошибке. Может быть кто-нибудь уже сталкивался с подобной ошибкой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 09:16 |
|
||
|
Очень странный глюк SQL. Может быть уже кто-то с этим сталкивался
|
|||
|---|---|---|---|
|
#18+
Katrine_S, пересказ впечатляет, ... а утка в зайце, заяц в яйце. SELECT из представления? Ошбика разве вам не говорит где конкретно не совпадение? больше фактов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 09:30 |
|
||
|
Очень странный глюк SQL. Может быть уже кто-то с этим сталкивался
|
|||
|---|---|---|---|
|
#18+
ну и несовпадение не даст скомпилировать если такой объёкт есть. Т.е. ваши out вы создаёте в p_out а потом в p_calc из них берёте? объекты статические? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 09:32 |
|
||
|
Очень странный глюк SQL. Может быть уже кто-то с этим сталкивался
|
|||
|---|---|---|---|
|
#18+
Katrine_Sимя столбца или число предоставленных значений не соответствует определению таблицы такая ошибка бывает когда в обоих ХП есть создается 2-е таблицы с одним и тем же именем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 09:37 |
|
||
|
Очень странный глюк SQL. Может быть уже кто-то с этим сталкивался
|
|||
|---|---|---|---|
|
#18+
Katrine_SНа текущий момент решила проблему вылетания Jobа, путем запуска процедуры p_calc с пустыми параметрами перед запуском p_out, без этого процедура упорно вылетает по ошибке.Попробуйте кеши планов почистить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 09:38 |
|
||
|
Очень странный глюк SQL. Может быть уже кто-то с этим сталкивался
|
|||
|---|---|---|---|
|
#18+
courtKatrine_Sимя столбца или число предоставленных значений не соответствует определению таблицы такая ошибка бывает когда в обоих ХП есть создается 2-е таблицы с одним и тем же именемАга, похоже. Вообще, такие ошибки нужно лечить просмотром того стейтмента, на котором произошла ошибка, и поискам во всех процедурах имён таблиц и процедур, которые встречаются в этом стейтменте (ну и анализ мест, где они встретились). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 09:47 |
|
||
|
Очень странный глюк SQL. Может быть уже кто-то с этим сталкивался
|
|||
|---|---|---|---|
|
#18+
courtKatrine_Sимя столбца или число предоставленных значений не соответствует определению таблицы такая ошибка бывает когда в обоих ХП есть создается 2-е таблицы с одним и тем же именем Спасибо. Помогло. В обеих процедурах создавалась виртуальная таблица с одним и тем же именем для фильтрации данных. После изменений они стали отличаться. После внесения соответствующих изменений в p_calc все заработало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 11:23 |
|
||
|
Очень странный глюк SQL. Может быть уже кто-то с этим сталкивался
|
|||
|---|---|---|---|
|
#18+
Katrine_S, Временные таблицы с одинаковыми именами должны иметь одинаковую структуру. См. справку по временным таблицам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 14:15 |
|
||
|
Очень странный глюк SQL. Может быть уже кто-то с этим сталкивался
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовKatrine_S, Временные таблицы с одинаковыми именами должны иметь одинаковую структуру. См. справку по временным таблицам. кому должны? Никто не запрещает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 14:25 |
|
||
|
Очень странный глюк SQL. Может быть уже кто-то с этим сталкивался
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовKatrine_S, Временные таблицы с одинаковыми именами должны иметь одинаковую структуру. См. справку по временным таблицам. WTF??? Вы, случайно, не путаете с требованиями по снижением затрат по многократному высокочастотному созданию временных таблиц? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 14:55 |
|
||
|
Очень странный глюк SQL. Может быть уже кто-то с этим сталкивался
|
|||
|---|---|---|---|
|
#18+
uaggsterВладислав КолосовKatrine_S, Временные таблицы с одинаковыми именами должны иметь одинаковую структуру. См. справку по временным таблицам. WTF??? Вы, случайно, не путаете с требованиями по снижением затрат по многократному высокочастотному созданию временных таблиц? и эти требования тоже огласите, раздел с одинаковыми структурами снижающими ото остальное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 15:04 |
|
||
|
Очень странный глюк SQL. Может быть уже кто-то с этим сталкивался
|
|||
|---|---|---|---|
|
#18+
uaggsterВладислав КолосовKatrine_S, Временные таблицы с одинаковыми именами должны иметь одинаковую структуру. См. справку по временным таблицам. WTF??? Вы, случайно, не путаете с требованиями по снижением затрат по многократному высокочастотному созданию временных таблиц? Если разные временные таблиц с одним именем используются во вложенных модулях, то, MS очень рекомендует иметь одинаковую структуру данных у этих таблиц т. е. вот так правильно Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. а вот так неправильно Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 15:07 |
|
||
|
Очень странный глюк SQL. Может быть уже кто-то с этим сталкивался
|
|||
|---|---|---|---|
|
#18+
msLex, Я вот не говорю что делайте, но где же эти рекомендации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 15:13 |
|
||
|
Очень странный глюк SQL. Может быть уже кто-то с этим сталкивался
|
|||
|---|---|---|---|
|
#18+
TaPaKmsLex, Я вот не говорю что делайте, но где же эти рекомендации? В доке https://docs.microsoft.com/ru-ru/sql/t-sql/statements/create-table-transact-sql?view=sql-server-2017 However, for modifications to resolve to the table that was created in the nested procedure, the table must have the same structure, with the same column names, as the table created in the calling procedure. This is shown in the following example. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 15:16 |
|
||
|
Очень странный глюк SQL. Может быть уже кто-то с этим сталкивался
|
|||
|---|---|---|---|
|
#18+
Ну и простенький пример, с ошибкой, вызванной повторной компиляцией вложенной процедуры в момент ее вызова из внешней Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. Msg 207, Level 16, State 1, Procedure p2, Line 5 [Batch Start Line 24] Invalid column name 'id1'. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 15:27 |
|
||
|
Очень странный глюк SQL. Может быть уже кто-то с этим сталкивался
|
|||
|---|---|---|---|
|
#18+
msLex, да ладно авторDROP TABLE IF EXISTS #t GO CREATE OR ALTER PROCEDURE dbo.Test2 AS SELECT 'aaa' as a INTO #t SELECT * FROM #t GO CREATE OR ALTER PROCEDURE dbo.Test1 AS CREATE TABLE #t(x INT PRIMARY KEY); INSERT INTO #t VALUES (1); SELECT Test1Col = x FROM #t; EXEC Test2; GO CREATE TABLE #t(x INT PRIMARY KEY); INSERT INTO #t VALUES (99); GO EXEC Test1; SELECT * FROM #t GO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 15:27 |
|
||
|
Очень странный глюк SQL. Может быть уже кто-то с этим сталкивался
|
|||
|---|---|---|---|
|
#18+
TaPaKmsLex, да ладно авторDROP TABLE IF EXISTS #t GO CREATE OR ALTER PROCEDURE dbo.Test2 AS SELECT 'aaa' as a INTO #t SELECT * FROM #t GO CREATE OR ALTER PROCEDURE dbo.Test1 AS CREATE TABLE #t(x INT PRIMARY KEY); INSERT INTO #t VALUES (1); SELECT Test1Col = x FROM #t; EXEC Test2; GO CREATE TABLE #t(x INT PRIMARY KEY); INSERT INTO #t VALUES (99); GO EXEC Test1; SELECT * FROM #t GO Важен момент компиляции вложенной процедуры. И это самое плохое, получается "плавающая" ошибка, отловить которую очень трудно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 15:29 |
|
||
|
Очень странный глюк SQL. Может быть уже кто-то с этим сталкивался
|
|||
|---|---|---|---|
|
#18+
msLex, автор. И это самое плохое, получается "плавающая" ошибка, отловить которую очень трудно. о да, есть знакомые извращенцы с такими подходами :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 15:30 |
|
||
|
Очень странный глюк SQL. Может быть уже кто-то с этим сталкивался
|
|||
|---|---|---|---|
|
#18+
TaPaK, А если так: Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 15:32 |
|
||
|
Очень странный глюк SQL. Может быть уже кто-то с этим сталкивался
|
|||
|---|---|---|---|
|
#18+
invmTaPaK, А если так: Код: sql 1. 2. 3. 4. 5. а так не будем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 15:34 |
|
||
|
Очень странный глюк SQL. Может быть уже кто-то с этим сталкивался
|
|||
|---|---|---|---|
|
#18+
TaPaKа так не будемА если таки надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 15:40 |
|
||
|
Очень странный глюк SQL. Может быть уже кто-то с этим сталкивался
|
|||
|---|---|---|---|
|
#18+
invmTaPaKа так не будемА если таки надо? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 15:45 |
|
||
|
Очень странный глюк SQL. Может быть уже кто-то с этим сталкивался
|
|||
|---|---|---|---|
|
#18+
или Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 15:48 |
|
||
|
Очень странный глюк SQL. Может быть уже кто-то с этим сталкивался
|
|||
|---|---|---|---|
|
#18+
TaPaKinvmпропущено... А если таки надо? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Все это похоже на жуткие костыли. По мне, так такое кривое поведение с # таблицами - документированная бага. Ведь нет ничего проще найти стейтмент с созданием # таблицы внутри модуля и использовать его. Создание # таблицы не спрячешь в динамике или вложенном стейтменте, они как на ладони. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 15:50 |
|
||
|
Очень странный глюк SQL. Может быть уже кто-то с этим сталкивался
|
|||
|---|---|---|---|
|
#18+
TaPaK Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Какое преимущество у данных манипуляций перед банальным переименованием #t? msLexВсе это похоже на жуткие костыли.+100500 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 15:58 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39836420&tid=1687560]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
70ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 392ms |

| 0 / 0 |
