|
|
|
Sqlserveragent и nvarchar(max)
|
|||
|---|---|---|---|
|
#18+
Добрый день. Нуждаюсь в помощи и совете вашем по следующему вопросу. Конфигурация. SQL server 2008 SE (10.00.5512.0) на Windows Server 2008 SE R2 Имеется запрос дергающий данные с удаленного сервера в виде xml. Затем с помощью docpreparexml эти данные обрабатываются и кладутся в таблицу. Запрос офорлен в виде хранимой процедуры, которая вызывается агентом SQL сервера по расписанию. Всё хорошо, но есть одно но. При получении записи длиной более 8 000 байт процедура валится с ошибкой несмотря на то что тип данных везде указан как nvarchar(max). Такое поведение наблюдается при выполнении процедуры агентом и при помощи sqlcmd. При вызове данной процедуры из Management Studio она (процедура) отрабатывает нормально, без ошибок. Вопрос. Как заставить агента работать с данными длина которых превышает 8000 байт? ЗЫ. Ошибка говорит о том что неожиданный конец xml файла. Т.е. при выполнении агентом часть данных превышающая предел просто отбрасывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 13:19:03 |
|
||
|
Sqlserveragent и nvarchar(max)
|
|||
|---|---|---|---|
|
#18+
SeriousDanilТакое поведение наблюдается при выполнении процедуры агентом и при помощи sqlcmd. При вызове данной процедуры из Management Studio она (процедура) отрабатывает нормально, без ошибок. Код выполняет сервер, а не агент, sqlcmd или студия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 13:45:48 |
|
||
|
Sqlserveragent и nvarchar(max)
|
|||
|---|---|---|---|
|
#18+
Glory, Отлично. Спасибо за коррекцию неверной формулировки. Но всё же вопрос по существу. Поведение сервера выполняющего код при вызове процедуры из sqlcmd или через агента отличается от его же поведения при выполнении кода при вызове процедуры через Management Studio. Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 14:00:59 |
|
||
|
Sqlserveragent и nvarchar(max)
|
|||
|---|---|---|---|
|
#18+
SeriousDanilПоведение сервера выполняющего код при вызове процедуры из sqlcmd или через агента отличается от его же поведения при выполнении кода при вызове процедуры через Management Studio. Почему? ну так и сравните то, что разные приложения передают серверу на выполнения Начните прямо с команд создания соединения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 14:03:30 |
|
||
|
Sqlserveragent и nvarchar(max)
|
|||
|---|---|---|---|
|
#18+
Glory, Я жеж пишу, что данные обрубаются до 8 000 байт. Конечно я всё сравнил. Т.е. изначально при получении данных с сервера закачиваются все данные при вызове из Management Studio и только первые 8000 байт при вызове с помощью агента и sqlcmd. Вызывается одна и та же процедура. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 14:08:20 |
|
||
|
Sqlserveragent и nvarchar(max)
|
|||
|---|---|---|---|
|
#18+
SeriousDanilЯ жеж пишу, что данные обрубаются до 8 000 байт. Это ваш вольный перевод сообщения об ошибке ? SeriousDanilКонечно я всё сравнил. Настройки коннекто входили в это "всё" ? А протокол соединения ? А логин соединения ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 14:10:53 |
|
||
|
Sqlserveragent и nvarchar(max)
|
|||
|---|---|---|---|
|
#18+
Glory, авторВыполняется от имени пользователя: NT AUTHORITY\система.Синтаксический анализ XML: строка 6, символ 13, непредвиденное завершение входных данных [SQLSTATE 42000] (Ошибка 9400). Шаг завершился с ошибкой. Входные данные непредвиденно завершаются только если они превышают своим размером 8000 байт. Если меньше искомого предела, то задание отрабатывает без ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 14:25:24 |
|
||
|
Sqlserveragent и nvarchar(max)
|
|||
|---|---|---|---|
|
#18+
SeriousDanil, UPD. И в студии и в задании содержиться всего две строчки Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 14:28:31 |
|
||
|
Sqlserveragent и nvarchar(max)
|
|||
|---|---|---|---|
|
#18+
авторВыполняется от имени пользователя: NT AUTHORITY\система. И в Management Studio тоже ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 14:28:55 |
|
||
|
Sqlserveragent и nvarchar(max)
|
|||
|---|---|---|---|
|
#18+
Glory, Я понимаю ваше стремление ткнуть в наиболее детские болезни и невнимательность мою, но всё же. Это не зависит от учетной записи (проверено с помощью учетки администратора домена и по совместительству sa на сервере через sqlcmd). Повторюсь. При длине входных данных менее 8000 байт задание отрабатывает без ошибок. При большей длине валится с ошибкой указанной выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 14:33:42 |
|
||
|
Sqlserveragent и nvarchar(max)
|
|||
|---|---|---|---|
|
#18+
SeriousDanilЯ понимаю ваше стремление ткнуть в наиболее детские болезни и невнимательность мою, но всё же. Вы сраниваете 3 клиентских приложения Если работа одного отличается от работы других, то значит причина в приложении, а не в сервере. SeriousDanilПовторюсь. При длине входных данных менее 8000 байт задание отрабатывает без ошибок. При большей длине валится с ошибкой указанной выше. И как вы предлагаете узнать, что собственно вы там в процедуре написали для извлечения более 8000 байт ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 14:51:26 |
|
||
|
Sqlserveragent и nvarchar(max)
|
|||
|---|---|---|---|
|
#18+
Glory, ОК. Я полагал что это несложный вопрос и можно обойтись теорией, но раз нет так нет. Вот запрос. Код: 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. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. Падает здесь Код: sql 1. 2. 3. 4. 5. Сразу скажу, что я не знаю почему они присылают мне данные где вместо символов '<' и '>' стоят gt и lt соответственно. По другому никак по их словам. Далее, я не разработчик БД в которую я заливаю данные, моя задача прикрутить данный костыль, чтобы он не доставлял головной боли никому. Сейчас он не доставляет головной боли никому кроме меня в связи с вышеизложенной проблемой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 15:15:53 |
|
||
|
Sqlserveragent и nvarchar(max)
|
|||
|---|---|---|---|
|
#18+
SeriousDanilПадает здесь Здесь у вас не одна команда, а куча вложенных команд Какая из них падает ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 15:19:16 |
|
||
|
Sqlserveragent и nvarchar(max)
|
|||
|---|---|---|---|
|
#18+
Glory, Код: sql 1. она падает падает потому что @Body больше 8000 байт обрезается почему-то при вызове из агента или sqlcmd. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 15:27:24 |
|
||
|
Sqlserveragent и nvarchar(max)
|
|||
|---|---|---|---|
|
#18+
SeriousDanilпадает потому что @Body больше 8000 байт обрезается почему-то при вызове из агента или sqlcmd. Ну так как вы узнали, что значение именно обрезается то ? Как вы узнали какая именно команда его обрезает ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 15:30:25 |
|
||
|
Sqlserveragent и nvarchar(max)
|
|||
|---|---|---|---|
|
#18+
SeriousDanilпадает потому что @Body больше 8000 байт обрезается почему-то при вызове из агента или sqlcmd.Уверены, что именно на вызове процедуры? Ваши манипуляции до вызова sp_xml_preparedocument могут приводить к невалидному xml. Например: Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 15:57:09 |
|
||
|
Sqlserveragent и nvarchar(max)
|
|||
|---|---|---|---|
|
#18+
invm, Я ж говорю, что на мелких объемах работает. Не работает когда объем данных превышает значение в 8000 байт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 16:54:20 |
|
||
|
Sqlserveragent и nvarchar(max)
|
|||
|---|---|---|---|
|
#18+
SeriousDanilЯ ж говорю, что на мелких объемах работает. Если не хотите разбирать и дебагить ваш код, то никто за вас это делать не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 17:08:48 |
|
||
|
Sqlserveragent и nvarchar(max)
|
|||
|---|---|---|---|
|
#18+
SeriousDanilinvm, Я ж говорю, что на мелких объемах работает. Не работает когда объем данных превышает значение в 8000 байт.Вы приверженец принципа "Мой код идеален, это все БГ с Microsoft накосячили"? У вас @Body типа xml. Неужели непонятно, что если выполнение дошло до EXEC sp_xml_preparedocument @hdoc OUTPUT, @Body, то в @Body валидный xml? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 17:10:57 |
|
||
|
Sqlserveragent и nvarchar(max)
|
|||
|---|---|---|---|
|
#18+
Вообщем так. Падает здесь Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Конкретно на этой строке Код: sql 1. Говорит вот что: авторСообщение 9400, степень серьезности 16, состояние 1, строка 40: Синтаксический анализ XML: строка 6, символ 22, непредвиденное завершение входных данных [SQLSTATE 42000] Вытащить данный @Body из планировщика я не могу (не знаю как). При запуске из студии выдает нормальный xml без выпендрежа, который затем нормально обрабатывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 17:12:48 |
|
||
|
Sqlserveragent и nvarchar(max)
|
|||
|---|---|---|---|
|
#18+
invm, Мне понятно это, в предыдущем посте отписался что изначально неверно указал место где падает. Сейчас нашел точное место. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 17:14:36 |
|
||
|
Sqlserveragent и nvarchar(max)
|
|||
|---|---|---|---|
|
#18+
SeriousDanilКонкретно на этой строке Код: sql 1. В этой строке - вызов процедуры dbo.spSOAPMethodCall Код который для вас является по всей видимости непогрешимым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 17:16:21 |
|
||
|
Sqlserveragent и nvarchar(max)
|
|||
|---|---|---|---|
|
#18+
Glory, Я и не прошу дебагить мой код за меня. Я в тупике и не знаю куда копать даже, потому и прошу помочь хотя бы указать вероятные причины или направления в которых стоит копать. Пока же я в ситуации что "ищу проблему под фонарем, а не там где потерял, потому что здесь светлее". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 17:18:32 |
|
||
|
Sqlserveragent и nvarchar(max)
|
|||
|---|---|---|---|
|
#18+
SeriousDanilЯ в тупике и не знаю куда копать даже, потому и прошу помочь хотя бы указать вероятные причины или направления в которых стоит копать. вот сюда SeriousDanilЯ и не прошу дебагить мой код за меня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 17:19:12 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=38189885&tid=1690753]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
267ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
85ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 631ms |

| 0 / 0 |
