Как работать с максимальной длиной строки 255 в метаданных SSAS DMV
Я пытаюсь импортировать метаданные SSAS DMV в SQL Server, используя поток данных в SSIS. В этом примере я пытаюсь импортировать данные из DMV $SYSTEM.TMSCHEMA_PARTITIONS. Мой оператор select (который выглядит как SQL, но не SQL):
SELECT
[ID]
,[TableID]
,[Name]
,[Description]
,[DataSourceID]
,[QueryDefinition]
,[State]
,[Type]
,[PartitionStorageID]
,[Mode]
,[DataView]
,[ModifiedTime]
,[RefreshedTime]
,[SystemFlags]
,[ErrorMessage]
FROM $SYSTEM.TMSCHEMA_PARTITIONS
Столбец QueryDefinition содержит записи с несколькими тысячами символов. Однако раздел ExternalColumns компонента источника данных служб SSIS распознает столбцы как DT_WSTR длиной 255. Изменить тип данных внешнего столбца невозможно, так как он будет возвращаться обратно. Также невозможно использовать CAST или CONVERT в операторе выбора DMV согласно документации MS:
Механизм запросов для DMV - это анализатор Data Mining. Синтаксис запроса DMV основан на операторе SELECT (DMX). Хотя синтаксис запроса DMV основан на операторе SQL SELECT, он не поддерживает полный синтаксис оператора SELECT. Примечательно, что JOIN, GROUP BY, LIKE, CAST и CONVERT не поддерживаются.
Естественно, я получаю ошибку усечения. У меня вопрос, есть ли способ изменить способ, которым SSIS интерпретирует типы данных метаданных SSAS DMV?
Я попытался использовать order by (в качестве теста), чтобы сначала вернуть записи с длиной строки> 255, чтобы заставить SSIS мыслить правильно. Это было безрезультатно.
1 ответ
Попробуйте добавить запрос со всеми столбцами, кроме QueryDefinition
столбец, а затем определите этот столбец с помощью следующих шагов. Пройдя через это, я смог установить тип данных DT_WSTR с длиной 4000 для внешнего и выходного столбцов компонента OLE DB Source.
- Определите диспетчер соединений как соединение OLE DB с типом поставщика "Собственный OLE DB\Microsoft OLE DB для служб Analysis Services 13.0".
- В задаче потока данных добавьте компонент источника OLE DB со всеми столбцами, кроме
QueryDefinition
столбец и убедитесь, что типы данных для других столбцов установлены правильно. - После этого установите
ValidateExternalMetadata
ложно в источнике OLE DB. - Откройте расширенный редактор источника OLE DB (щелкните правой кнопкой мыши и выберите "Показать расширенный редактор"). Добавить
QueryDefinition
столбец вSqlCommand
поле на странице свойств компонента. - На странице "Свойства ввода и вывода" перейдите в папку "Внешние столбцы" в разделе "Вывод источника OLE DB", нажмите кнопку "Добавить столбец" и добавьте
QueryDefinition
столбец с правильным типом данных и большей длиной. Запишите значение вID
поле для этого столбца. - В папке "Выходные столбцы" добавьте
QueryDefinition
столбец снова с тем же типом данных и длиной. вExternalMetadataColumnID
введите то же значение, что и этот столбец в полеID
поле в папке Внешние столбцы, чтобы сопоставить их вместе.