Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 XML поле удаляет часть инсертируемого текста  [new]
V_i_t
Member

Откуда: Рига
Сообщений: 29
Добрый день!

Может ли кто нибудь прокомментировать почему
SQL SERVER 10.0.1600.22 RTM Standart Edition
после инсерта самовольничает и удаляет первую строку
<?xml version="1.0" encoding="UTF-8"?>???

И как обойти эту проблему?
Пример ниже.

create table dbo.test_table (msg xml)
declare @po xml

set @po = '<?xml version="1.0" encoding="UTF-8"?>
           <envelope>
            <body>
            <test_tag>jabcjabjc</test_tag>
            </body>
           </envelope>'

insert into dbo.test_table (msg) values (@po)

select msg from dbo.test_table 

drop table dbo.test_table
23 ноя 09, 13:29    [7963986]     Ответить | Цитировать Сообщить модератору
 Re: XML поле удаляет часть инсертируемого текста  [new]
Glory
Member

Откуда:
Сообщений: 104760
Потому что в MSSQL все xml-и хранятся в UTF-16
23 ноя 09, 13:31    [7964016]     Ответить | Цитировать Сообщить модератору
 Re: XML поле удаляет часть инсертируемого текста  [new]
V_i_t
Member

Откуда: Рига
Сообщений: 29
Glory
Потому что в MSSQL все xml-и хранятся в UTF-16


Ну для вас наверное нормально такое поведение сервера.
Мне же интересно почему нет даже намёка на ошибку при попытке инсерта.

Суть вопроса почему инсертим 'AAA' получаем 'AA'.
23 ноя 09, 13:35    [7964047]     Ответить | Цитировать Сообщить модератору
 Re: XML поле удаляет часть инсертируемого текста  [new]
iljy
Member

Откуда:
Сообщений: 8711
V_i_t,

потому что это не ошибка, а системная функция. хмуль - это не текстовые данные, и при выполнении присваивания сервер выполняет творческую переработку, в частности - меняет кодировку, и ваш заголовок становится бессмысленным.
23 ноя 09, 13:36    [7964059]     Ответить | Цитировать Сообщить модератору
 Re: XML поле удаляет часть инсертируемого текста  [new]
Glory
Member

Откуда:
Сообщений: 104760
V_i_t
Glory
Потому что в MSSQL все xml-и хранятся в UTF-16


Ну для вас наверное нормально такое поведение сервера.
Мне же интересно почему нет даже намёка на ошибку при попытке инсерта.

На какую ошибку то ?
Серверу просто не нужна ваша строка <?xml version="1.0" encoding="UTF-8"?>???
И он ее игнорирует
23 ноя 09, 13:37    [7964076]     Ответить | Цитировать Сообщить модератору
 Re: XML поле удаляет часть инсертируемого текста  [new]
V_i_t
Member

Откуда: Рига
Сообщений: 29
iljy
V_i_t,

потому что это не ошибка, а системная функция. хмуль - это не текстовые данные, и при выполнении присваивания сервер выполняет творческую переработку, в частности - меняет кодировку, и ваш заголовок становится бессмысленным.


Правильно ли я понял, что '<?xml' можно было вообще не использовать потому как он не имеет закрывающего тага и очень похож на комментарий?
23 ноя 09, 13:39    [7964082]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить