Использование пространственных типов SQL Server в загрузке данных служб SSIS - PullRequest
2 голосов
/ 27 октября 2010

Я пытаюсь загрузить файл, используя функцию импорта данных SQL Server - добавляя строки в существующую таблицу.

моя существующая таблица создается следующим образом:

CREATE TABLE [dbo].[load](
    [Long] [varchar](50) NULL,
    [Lat] [varchar](50) NULL,
    [Geog]  AS ([geography]::STGeomFromText(((('POINT('+[Long])+' ')+[Lat])+')',(4326)))
)

однако призагрузка пытается выполнить, я вижу следующие сообщения об ошибках.Я полагаю, что проблема заключается в вычисляемом столбце «Геог», поскольку данные загружаются нормально, когда я вычеркиваю это из определения таблицы.

Ошибка 0xc0202009: Поток данных Задача 1:Код ошибки служб SSIS DTS_E_OLEDBERROR.Произошла ошибка OLE DB.Код ошибки: 0x80004005.Доступна запись OLE DB.Источник: «Собственный клиент Microsoft SQL Server 10.0». Результат: 0x80004005 Описание: «При чтении текущей строки с хоста обнаружен преждевременный конец сообщения - входящий поток данных был прерван, когда сервер ожидал увидеть больше данных.возможно, завершена работа хост-программы. Убедитесь, что вы используете поддерживаемый интерфейс прикладного программирования (API) клиента. ".(Мастер импорта и экспорта SQL Server) Ошибка 0xc0209029: Поток данных Задача 1: Код ошибки служб SSIS DTS_E_INDUCEDTRANSFORMFAILUREONERROR.«Вход« Вход назначения »(47)» не выполнен, так как произошел код ошибки 0xC020907B, а расположение строки ошибок на «входе» Вход назначения (47) »указывает на ошибку при ошибке.Произошла ошибка в указанном объекте указанного компонента.Перед этим могут быть сообщения об ошибках с дополнительной информацией о сбое.(Мастер импорта и экспорта SQL Server) Ошибка 0xc0047022: Поток данных Задача 1. Код ошибки служб SSIS DTS_E_PROCESSINPUTFAILED.Метод ProcessInput для компонента «Destination - load_school» (34) завершился ошибкой с кодом ошибки 0xC0209029 при обработке ввода «Destination Input» (47).Указанный компонент возвратил ошибку из метода ProcessInput.Ошибка относится только к компоненту, но является фатальной и приводит к остановке выполнения задачи «Поток данных».Перед этим могут быть сообщения об ошибках с дополнительной информацией о сбое.(Мастер импорта и экспорта SQL Server)

1 Ответ

2 голосов
/ 29 октября 2010

Так что может показаться, что наличие вычисляемого столбца, который содержит тип географии в определении, не поддерживается (я пробовал с другими типами, включая тип POINT, и он работал нормально). Это может быть связано с отсутствием поддержки со стороны служб SSIS для пространственных типов данных или с тем, как SQL Server обрабатывает вычисляемый столбец во время пакетной вставки.

В любом случае мне нужно было найти решение для моей проблемы, и я нашел следующую работу.

В моем пакете служб SSIS я начинаю с удаления вычисляемого столбца, который вызывает проблемы. Затем я запускаю процесс загрузки данных Затем я снова добавляю вычисляемый столбец в таблицу, используя инструкцию ALTER.

В настоящее время это работает нормально, хотя это может вызвать некоторые проблемы с автономными данными во время выполнения сценария. однако для решения этой проблемы должно быть достаточно просто.

Это означало, что мне пришлось создать более сложный пакет служб SSIS, чем просто использовать простой мастер «Импорт данных», предоставляемый SQL Server, и я все еще чувствую себя немного разочарованным из-за того, что не знаю действительной причины моей проблемы. Я просто нашел способ обойти это и двигаться дальше. Я все еще был бы признателен, если бы кто-то мог указать, почему я вижу этот сбой.

...