Как правильно сохранить большой XML в SQL Server

User avatar
AnyaGal
Уже с Приветом
Posts: 5771
Joined: 02 Dec 1999 10:01
Location: Saint-Petersburg --> Bellevue, WA

Как правильно сохранить большой XML в SQL Server

Post by AnyaGal »

Нужно сохранить относительно большой XML (~2000 chars, а возможно и больше) в поле таблице SQL Server?

Пока я для этого поля выбрала datatype = "text".

Пробую запустить Insert statement, и выдается exception:

"String or binary data would be truncated. The statment has been terminated"

Раньше я с такими большими полями не работала. Что тут может быть не так?

Заранее спасибо.
Dmitry S
Уже с Приветом
Posts: 1490
Joined: 24 Jan 1999 10:01
Location: Russia -> village in WA

Post by Dmitry S »

User avatar
roadman
Уже с Приветом
Posts: 707
Joined: 12 Mar 2003 22:29
Location: Moscow->Bay Area, CA

Re: Как правильно сохранить большой XML в SQL Server

Post by roadman »

AnyaGal wrote:Пробую запустить Insert statement, и выдается exception

Как именно Вы это делаете?
1. пишете большой запрос "руками"
insert into table t_WithColText (col_text) values('<root>....</root>')
тогда надо позаботиться, чтобы одинарные и двойные ковычки были заменены на SQL приемлемый формат иначе SQL выражение будет invalid.
2. Делаете bind
insert into table t_WithColText (col_text) values(?)
тогда смотрите какой тип для bind-параметра Вы выбрали, возможно, что это varchar(len1), а вставить Вы пытаетесь XML длина которого превышает len1.
The philosophy of one century is the common sense of the next. --Henry Ward Beecher
User avatar
AnyaGal
Уже с Приветом
Posts: 5771
Joined: 02 Dec 1999 10:01
Location: Saint-Petersburg --> Bellevue, WA

Post by AnyaGal »

Dmitry S wrote:WRITETEXT
UPDATETEXT


Спасибо!
Я так понимаю эти методы специально для datatype text. А вообщетип text я правильно выбрала или можно было varchar обойтись?
User avatar
AnyaGal
Уже с Приветом
Posts: 5771
Joined: 02 Dec 1999 10:01
Location: Saint-Petersburg --> Bellevue, WA

Re: Как правильно сохранить большой XML в SQL Server

Post by AnyaGal »

roadman wrote:
AnyaGal wrote:Пробую запустить Insert statement, и выдается exception

Как именно Вы это делаете?
1. пишете большой запрос "руками"
insert into table t_WithColText (col_text) values('<root>....</root>')
тогда надо позаботиться, чтобы одинарные и двойные ковычки были заменены на SQL приемлемый формат иначе SQL выражение будет invalid.


Использую первый вариант. Двойных кавычек там скорее всего нет, а одинарные наверное есть - завтра на работе проверю, а на что можно заменить одинарные? Чего-то я совсем торможу.
User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Re: Как правильно сохранить большой XML в SQL Server

Post by WildVlad »

AnyaGal wrote: Двойных кавычек там скорее всего нет, а одинарные наверное есть - завтра на работе проверю, а на что можно заменить одинарные?
На две одинарные подряд?
I hated LA
User avatar
AnyaGal
Уже с Приветом
Posts: 5771
Joined: 02 Dec 1999 10:01
Location: Saint-Petersburg --> Bellevue, WA

Post by AnyaGal »

Забавно, решила я вместо SQL выражения в codebehind модуле использовать stored процрдуре и передавать этот большой XML как входной параметер, как все проблемы испарились.

Интересно почему на INSERT и UPDATE при использовании Commandtype.Text SQL Server ругается, а при использовании CommandType.StoredProcedure - нет. :roll:

Return to “Вопросы и новости IT”