|
|
|
Ошибка в хранимой процедуре SQL2005
|
|||
|---|---|---|---|
|
#18+
Есть кусок кода: Код: plaintext 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. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. VFP 9.0 SP1, SQL 2000 - всё работает нормально. Выдаёт: Код: plaintext 1. 2. Настало время переносить всё в рабочую базу. Поскольку имеется SQL Server 2005, решил перенести в него. Сделал detach, скопировал файлы, сделал attach к другому SQL Server. Поставил compatibility level = 90. Поменял первую строчку в этом куске на новый сервер: Код: plaintext Запускаю. Первая запись проходит нормально. На второй выдаёт ошибку. Нажимаю 'Ignore'. Третья запись проходит нормально. На четвёртой выдаёт ошибку. Итд. Нечётные записи срабатывают, чётные - грохаются. Ошибка нижеследующая: OLE IDispatch exception code 0 from Microsoft OLE DB Provider for SQL Server: The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Parameter 2 (""): The RPC is marked with the metadata unchanged flag, but data type 0xAF has an actual length different from the one sent last time... Сompatibility level поставил обратно в 80 - не помогло. Длина lcDrv_CD всегда 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2006, 22:55 |
|
||
|
Ошибка в хранимой процедуре SQL2005
|
|||
|---|---|---|---|
|
#18+
Надеюсь тут разделят мое мнение , что ошибка у тебя в голове. Особенно нравится вот это: oData1 = CREATEOBJECT("clsSQLData", "MAINSERVER", "POY") Читаем описание функции CREATEOBJECT : CREATEOBJECT(cClassName [, eParameter1, eParameter2, ...]) cClassName - Хде ? Вообще радует: loSP.AddParam("@Drv_CD", adChar, adParamInput, 4) loSP.AddParam("@Status", adChar, adParamOutput, 2) авторOLE IDispatch exception code 0 from Microsoft OLE DB Provider for SQL Server: Где хоть одна команда связи с сервером через ODBC или ADO ? НУ параметры СA где ? ( хотя он все равно все делает проверенными выбранными методами доступа к данным). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2006, 23:25 |
|
||
|
Ошибка в хранимой процедуре SQL2005
|
|||
|---|---|---|---|
|
#18+
авторНадеюсь тут разделят мое мнение , что ошибка у тебя в голове. Надеюсь таки нет. авторoData1 = CREATEOBJECT("clsSQLData", "MAINSERVER", "POY") Читаем описание функции CREATEOBJECT : CREATEOBJECT(cClassName [, eParameter1, eParameter2, ...]) cClassName - Хде ? oData1 = CREATEOBJECT(" clsSQLData ", "MAINSERVER", "POY") авторГде хоть одна команда связи с сервером через ODBC или ADO ? НУ параметры СA где ? А шо у ней внутре? А внутре у ней неонка. Все эти команды скрыты внутри класса clsSQLData. Я не стал его приводить здесь 1) из-за размера 2) потому что никакого отношения к ошибке он не имеет Повторяюсь: под SQL 2000 всё прекрасно работает. Ошибки начинаются на SQL 2005. А именно, грохается на команде Код: plaintext где Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2006, 00:36 |
|
||
|
Ошибка в хранимой процедуре SQL2005
|
|||
|---|---|---|---|
|
#18+
Oopyr :) Юморист. Фамилию озвучь ? Чтобы я знал, что за урод придет ко мне на собеседование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2006, 00:50 |
|
||
|
Ошибка в хранимой процедуре SQL2005
|
|||
|---|---|---|---|
|
#18+
А что, уже вышел релиз 2005? Видимо, я как-то пропустил... Проблема в том, что по твоему коду ничего вразумительного сказать в принципе невозможно. OopyrВсе эти команды скрыты внутри класса clsSQLData. Я не стал его приводить здесь И что тебе могут на это ответить? Да откуда известно, что ты там написал! Хорошо, сам класс приводить не обязательно. Но напиши тестовый примерчик в "чистом" виде. Тот фрагмент, который вызывает ошибку. Т.е., не через класс, а "в лоб". Начиная со строки соединения... OopyrНа второй выдаёт ошибку. Нажимаю 'Ignore'. А где сообщение об ошибке? Что случиться дальше уже не имеет значения. Ошибка то уже произошла. Какой смысл продолжать выполнение. Насколько я знаю, "совместимость" у 2005 понятие несколько условное. Далеко не все команды SQL2000 пройдут в SQL2005. Например, хинт (nolock) не пройдет. Точнее, ему нужен другой синтаксис. Посмотри с точки зрения синтаксиса, допустимы ли, те команды, которые ты посылаешь на сервер в SQL2005. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2006, 12:35 |
|
||
|
Ошибка в хранимой процедуре SQL2005
|
|||
|---|---|---|---|
|
#18+
ВладимирМА что, уже вышел релиз 2005? Видимо, я как-то пропустил... Да, вышел. Был даже праздник . Мне немного повезло - Microsoft домой прислал его (MS SQL Server 2005 enterpise edition) как новогодний подарок вместе с VS.NET 2005 Сейчас Вот надо менять компьютер - требования у этих продуктов очень уж большие... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2006, 12:52 |
|
||
|
Ошибка в хранимой процедуре SQL2005
|
|||
|---|---|---|---|
|
#18+
luserЧтобы я знал, что за урод придет ко мне на собеседование. Фи! Ну что за манеры? ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2006, 13:25 |
|
||
|
Ошибка в хранимой процедуре SQL2005
|
|||
|---|---|---|---|
|
#18+
"В лоб" будет вот так: Код: plaintext 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. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. Можно вызывать с одним и тем же значением входного параметра - первый вызов проходит, второй падает. Код: plaintext 1. 2. Ошибка: OLE IDispatch exception code 0 from Microsoft OLE DB Provider for SQL Server: The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Parameter 2 (""): The RPC is marked with the metadata unchanged flag, but data type 0xAF has an actual length different from the one sent last time... Сама процедура выглядит так: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2006, 20:36 |
|
||
|
Ошибка в хранимой процедуре SQL2005
|
|||
|---|---|---|---|
|
#18+
А вот если сделать Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2006, 20:45 |
|
||
|
Ошибка в хранимой процедуре SQL2005
|
|||
|---|---|---|---|
|
#18+
Hi Oopyr! =========Beginning of the citation============== Some commands should never be prepared. For example, commands that specify stored procedure execution or include invalid text for SQL Server stored procedure creation should not be prepared. =========The end of the citation================ В общем "подготавливать" вызов ХП нет никакого смысла - а вот неприятные последствия как раз и вылезли... Проблема видимо в конвертации типов (второго параметра). Например если ЯВНО задать второй параметр - т.е. присвоить ему некоторое начальное НЕПУСТОЕ значение (для этого также надо указать что второй параметр имеет тип input/output), то никакой ошибки не возникнет. Т.е. заменив строку Код: plaintext 1. Код: plaintext 1. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2006, 23:53 |
|
||
|
|

start [/forum/topic.php?fid=41&gotonew=1&tid=1592653]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
174ms |
get topic data: |
8ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 455ms |

| 0 / 0 |
