Я пытаюсь импортировать метаданные 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 мыслить правильно. Это было безрезультатно.