Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / "String or binary data would be truncated." Как узнать что конкретно? / 6 сообщений из 6, страница 1 из 1
31.01.2002, 05:43
    #32021842
Илья
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"String or binary data would be truncated." Как узнать что конкретно?
Стандартная ситуация - при запросе вставки данные в каком-то поле обрезаются. Соответственно мне необходимо увеличить размер некоего поля. Но дело в том что в запросе таких полей сотни полторы (вот так получилось - не от меня зависит), а MS SQL весьма немногословен. Вопрос: как можно БЫСТРО узнать в каком КОНКРЕТНО поле происходит обрезание?
Заранее благодарен.
...
Рейтинг: 0 / 0
31.01.2002, 06:19
    #32021845
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"String or binary data would be truncated." Как узнать что конкретно?
Если вставляется одна запись, то проще всего после insert'а проверить реальную длину строковых полей для этой записи. Там, где она равна объявленной в таблице, наиболее вероятно произошло усечение.
...
Рейтинг: 0 / 0
31.01.2002, 08:18
    #32021863
Inna
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"String or binary data would be truncated." Как узнать что конкретно?
Обычно я делаю Select Max(Len(Поле_1)),..., Max(Len(Поле_N)) FROM <то, что нужно вставить>
Потом сравниваю с фактической длиной полей в таблице, в которую вставляются данные.
...
Рейтинг: 0 / 0
31.01.2002, 09:41
    #32021881
Илья
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"String or binary data would be truncated." Как узнать что конкретно?
Я немного неполно выразился. Дело в том что вставка данных происходит по одной записи. Вот пример запроса на вставку:

INSERT INTO PROPERTY(MLSID,[LAPID],[MLSNO],[COUNTY-ID],[APNO],[STAT],[STRNO],[STREET],[CITY],[ZIP],[CRSTS],[PRICE],[AREA],[MAPBK],[TGNO],[CENSUSTR],[ACRES],[LSQFT],[BEDRMS],[BATHS],[YRBLT],[TNAME],[TYPE],[STORIES],[OCCNM],[OCCPHAREA],[SOCOMP],[SHOW],[LSTDT],[TENYN],[POSS],[TYPAG],[LDR],[ADOM],[LOFNM],[LAGNM],[LOFNOAREA],[LOFNO],[VOICEAREA],[FAXAREA],[FAX],[LAGPHAREA],[LAGPH],[COLAGPHAREA],[EMAIL],[TRANDATE])
VALUES ('CASAC','SNATZJAM','S2201172','SA','115-0640-086-0000','A',8237,'VISALIA WAY','SACRAMENTO',95828,'AUBERRY',162000,10828,'T','338D6',.00,.120,'5357 SQ FT',3,2,1987,'COUNTRYSIDE','OTHER','1-ST','VACANT',916,'3','VA-LB','01/21/02','N','AGREE','ER','01/22/02',10,'RE/MAX CENTRAL','JIM NATZ',916,'498-7575',916,916,'498-7887',916,'498-7575',916,'JIM@JIMNATZ.COM','01/28/02')

MS SQL сервер на запрос отвечает:

Server: Msg 8152, Level 16, State 4, Line 1
String or binary data would be truncated.
The statement has been terminated.

А всего в таблице около двух сотен полей. Таким образом перебирать все поля и выяснять какое там поле оказалось маленьким тяжело. Как-нибудь можно заставить самого MS SQL сказать какое поле ему не нравится?
...
Рейтинг: 0 / 0
31.01.2002, 10:37
    #32021893
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"String or binary data would be truncated." Как узнать что конкретно?
1. Скопируйте текст в QA
3. При помощи Replace замените в первой строке "," на "'), COL_LENGTH ( 'PROPERTY' , '"
3. При помощи Replace замените во второй строке "," на "), datalength("
4. Замените INSERT и VALUES на SELECT
5. Можно ещё вывести список полей и значений.

Далее просматриваете список и ищете отличия...
...
Рейтинг: 0 / 0
31.01.2002, 11:05
    #32021898
Илья
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"String or binary data would be truncated." Как узнать что конкретно?
Всем огромное спасибо, очень помогло.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / "String or binary data would be truncated." Как узнать что конкретно? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]