Я в процессе импорта данных из устаревшей базы данных MySQL в SQL Server 2005.
У меня есть одна таблица, которая вызывает у меня горе. Я импортировал его из MySQL, используя связанный сервер и драйвер MySQL ODBC, и в итоге получаю следующее:
Col Name Datatype MaxLen
OrderItem_ID bigint 8
PDM_Structure_ID int 4
LastModifiedDate datetime 8
LastModifiedUser varchar 20
CreationDate datetime 8
CreationUser varchar 20
XMLData text -1
OrderHeader_ID bigint 8
Contract_Action varchar 10
ContractItem int 4
Мое основное внимание уделяется столбцу XMLData
- мне нужно очистить его и сделать так, чтобы я мог преобразовать его в тип данных XML, чтобы использовать на нем XQuery.
Поэтому я установил для таблицы параметр «большие данные вне строки» на 1:
EXEC sp_tableoption 'OrderItem', 'large value types out of row', 1
и затем я преобразую XMLData
в VARCHAR(MAX)
и выполняю некоторую очистку XML-файла, хранящегося в этом поле. Пока все хорошо.
Но когда я сейчас пытаюсь преобразовать этот столбец в тип данных XML:
ALTER TABLE dbo.OrderItem
ALTER COLUMN XMLData XML
Я получаю это сообщение здесь:
Сообщение 511, Уровень 16, Состояние 1, Строка 1
Невозможно создать строку размером 8077, которая
больше допустимого максимума
размер строки 8060. Заявление имеет
было прекращено.
, что довольно удивительно, учитывая, что столбцы, кроме XMLData
, занимают всего около 90 байтов, и я специально дал указание SQL Server хранить все «большие данные» вне строки ....
Так почему же SQL Server отказывается преобразовывать этот столбец в данные XML ??? Есть идеи?? Мысли ?? Что я могу проверить / изменить в моем подходе ??
Обновление: Я не знаю, что изменилось, но при второй попытке импортировать необработанные данные из MySQL в SQL Server мне удалось успешно преобразовать этот столбец NTEXT -> VARCHAR (MAX) в конце концов к XML ..... странно ..... anyhoo - работает сейчас - спасибо, ребята, за ваш вклад и рекомендации! Высоко ценится!