Не удалось обнаружить файл необходимый для сопоставления типов поставщиков с типами служб ssis

Обновлено: 06.07.2024

Для реализации простенького пакета необходимо установить надстройку SSDT (Sql server data tools) для вашей Visual Studio.

Допустим, вам необходимо перенести данные с одного сервера на другой. Первыми мыслями о решении данной задачи, как правило, являются следующие варианты: выгрузить данные с одного сервера в excel и воспользоваться мастером импорта или воспользоваться линком между серверами, если он, конечно, есть.

Однако линка может и не быть, а задача по переносу данных может оказаться периодичной. Тогда вам каждый раз придется повторять выгрузку данных и их импорт. Это неудобно.

В таких случаях на помощь как раз приходит SSIS. В других случаях, кстати тоже.

Что же представляет из себя SSIS? Это набор контейнеров, соединяемых между собой. Программа состоит из потока управления (Control Flow), который может включать в себя поток данных (Data Flow). Вот так выглядит стартовое окно проекта в Visual Studio 2017.

Итак, нам необходимо перенести данные таблицы с одного сервера на другой. Для начала нам необходимо создать соединения к этим серверам. Ниже представлен процесс создания:

Из списка выбираем необходимый нам тип соединения. Мы рассмотрим создание соединение OLEDB.

После того, как мы добавили необходимые соединения наступило время для создания в нашем Control Flow задачи потока данных. Для того в SSIS toolbox необходимо выбрать контейнер Data Flow Task (Задача потока данных).

Далее необходимо перейти в контейнер, который мы только что создали и выбрать Источник данных (Source) и назначение данных(Destination).

Перейдем к настройке источника данных. Здесь нам необходимо выбрать соединение, где находится таблица, из которой мы хотим перенести данные. Далее выбираем таблицу. Стоит отметить, что также необходимые данные можно выбрать через Sql запрос (для этого необходимо выбрать Sql command при выборе data access mode).

После настройки источника необходимо настроить назначение данных. Для этого выбираем соединение и таблицу, в которую будем переливать данные. После чего переходим на вкладку Mappings, для того чтобы сопоставить столбцы. Очень важно, чтобы у вас совпадали типы данных, потому что иначе пакет не отработает корректно.

ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics

Эта статья содержит наиболее распространенные ошибки, которые могут возникнуть при выполнении пакетов SQL Server Integration Services (SSIS) в среде выполнения интеграции SSIS. Рассмотрены возможные причины и действия для устранения ошибок.

Общие сведения

Где найти журналы для поиска и устранения неполадок

Используйте каталог служб SSIS (SSISDB) для просмотра подробных журналов выполнения. Подробные сведения см. в статье Наблюдение за выполнением пакетов и других операций.

Распространенные ошибки, причины и решения

Ниже приведены возможные причины и рекомендуемые действия.

Причина этой проблемы обычно заключается в том, что источник данных или назначение недоступны из среды выполнения интеграции MSSQL Integration Services. Причины могут быть разными. Попробуйте выполнить следующие действия:

  • Убедитесь, что источник данных, имя или IP назначения передается правильно.
  • Убедитесь, что брандмауэр настроен должным образом.
  • Убедитесь, что виртуальная сеть настроена правильно, если источник данных или назначение размещены локально.
    • Определить, связана ли эта ошибка с конфигурацией виртуальной сети, можно, выполнив подготовку виртуальной машины Azure в той же виртуальной сети. Затем проверьте, можно ли получить доступ к источнику данных или назначению с виртуальной машины Azure.
    • Об использовании виртуальной сети со средой выполнения интеграции SSIS см. подробнее в статье Присоединение среды выполнения интеграции Azure SSIS к виртуальной сети.
    • Возможная причина и рекомендуемое действие.
      • Эта ошибка может быть вызвана ограничением для источника и назначения Excel, когда несколько источников или назначений Excel выполняются параллельно в многопоточной работе. Чтобы устранить это ограничение, измените компоненты Excel так, чтобы они выполнялись последовательно, или разделите их на разные пакеты и активируйте исполнение задачи пакета, задав для свойства параметр ExecuteOutOfProcess значение True.

      Эта ошибка означает, что локальный диск используется в узле среды выполнения интеграции SSIS. Проверьте, не использует ли ваш пакет или настраиваемая установка слишком много места на диске:

      • Если диск занят пакетом, он будет освобожден после завершения выполнения пакета.
      • Если диск используется настраиваемой программой установки, необходимо отключить среду выполнения интеграции SSIS, изменить скрипт и снова запустить среду выполнения интеграции. Весь контейнер BLOB-объектов Azure, указанный для настраиваемой установки, будет скопирован на узел среды выполнения интеграции SSIS, поэтому убедитесь в отсутствии ненужных данных в этом контейнере.
      • Возможная причина и рекомендуемое действие.
        • Указано недопустимое имя файла.
        • Убедитесь, что вместо короткого времени в диспетчере подключений используется полное доменное имя (FQDN).

        Эта ошибка возникает, когда при выполнении пакета не удается найти файл на локальном диске в среде выполнения интеграции SSIS. Попробуйте выполнить следующие действия:

        • Не используйте абсолютный путь в пакете, который выполняется в среде выполнения интеграции SSIS. Используйте вместо этого текущий рабочий каталог выполнения (.) или временную папку (%TEMP%).
        • Если необходимо сохранить некоторые файлы на узлах среды выполнения интеграции SSIS, подготовьте их, как описано в разделе Настройка установки. После завершения выполнения все файлы в рабочем каталоге будут удалены.
        • Используйте службу Файлы Azure вместо хранения файла в узле среды выполнения интеграции SSIS. Дополнительные сведения см. в статье Использование общих папок Azure.

        Возможная причина заключается в том, что база данных SSISDB, созданная в Базе данных SQL Azure или в Управляемом экземпляре SQL, достигла своей квоты. Попробуйте выполнить следующие действия:

        • Попробуйте увеличить число единиц транзакций базы данных. Подробные сведения см. в статье Ограничения базы данных SQL для логического сервера.
        • Проверьте, создает ли ваш пакет много журналов. В этом случае можно настроить задание обработки эластичных баз данных для очистки этих журналов. См. подробнее об очистке журналов SSISDB с помощью заданий обработки эластичных баз данных Azure.

        Если в среде выполнения интеграции SSIS параллельно выполняется множество пакетов, эта ошибка может возникать из-за того, что SSISDB достигает предельного количества запросов. Чтобы устранить эту проблему, попробуйте увеличить DTU в SSISDB. Подробные сведения см. в статье Ограничения базы данных SQL для логического сервера.

        Эта ошибка в основном вызывается временной проблемой, поэтому попробуйте повторить выполнение пакета. Примените шаблон повтора в пакете SSIS, выполнив следующие действия.

        Эта ошибка обычно означает, что среда выполнения интеграции SSIS имеет неработоспособное состояние. Состояние и подробные сведения об ошибках см. на портале Azure. Дополнительные сведения см. в статье Среда выполнения интеграции Azure-SSIS.

        Эта ошибка возникает, когда среда выполнения интеграции SSIS не может получить доступ к хранилищу, выбранному для настраиваемой установки. Убедитесь, что указанный URI SAS допустим, и что срок его действия не истек.

        Одна из возможных причин заключается в том, что имя пользователя или пароль с включенной многофакторной проверкой подлинности Azure Active Directory настроены для проверки подлинности Azure Analysis Services. Эта проверка подлинности не поддерживается в среде выполнения интеграции SSIS. Попробуйте использовать субъект-службу для проверки подлинности в Azure Analysis Services:

        Подготовьте субъект-службу, как описано в статье Автоматизация с помощью субъектов-служб.

        В диспетчере подключений настройте параметр Использовать указанные имя пользователя и пароль: , задав app: <AppID> @*<TenantID> * в качестве имени пользователя и clientSecret в качестве пароля. Ниже приведен пример правильно отформатированного имени пользователя:

        В диспетчере подключений настройте параметр Использовать указанные имя пользователя и пароль, задав AppID в качестве имени пользователя и clientSecret в качестве пароля.

        Убедитесь, что метод проверки подлинности диспетчера подключений не настроен как Проверка пароля Active Directory, если параметр ConnectUsingManagedIdentity имеет значение True. Его можно настроить как Проверка подлинности SQL, которая будет игнорироваться, если задан параметр ConnectUsingManagedIdentity.

        Одна из возможных причин заключается в том, что протокол TLS не включен в среде выполнения интеграции SSIS, который необходим для источника OData. Включить TLS в среде выполнения интеграции SSIS можно с помощью настраиваемой установки. Дополнительные сведения см. в статье Не удается подключиться к OData Project Online из SSIS и Пользовательская установка для среды выполнения интеграции Azure-SSIS.

        Убедитесь, что среда выполнения интеграции Azure SSIS настроена с локальной средой выполнения интеграции. Дополнительные сведения см. в статье Настройка локальной среды выполнения интеграции в качестве прокси-сервера для среды выполнения интеграции Azure-SSIS IR в ADF.

        Убедитесь, что локальная среда выполнения интеграции установлена и запущена. Дополнительные сведения см. в статье Создание и настройка локальной среды выполнения интеграции.

        Убедитесь, что соответствующий поставщик, используемый соединителями OLE DB в пакете, надлежащим образом установлен на компьютере локальной среды выполнения интеграции. Дополнительные сведения см. в статье Настройка локальной среды выполнения интеграции в качестве прокси-сервера для среды выполнения интеграции Azure-SSIS IR в ADF.

        Одной из потенциальных причин является то, что локальная среда выполнения интеграции не установлена или не обновлена должным образом. Попробуйте загрузить и переустановить последнюю версию локальной среды выполнения интеграции. Дополнительные сведения см. в статье Создание и настройка локальной среды выполнения интеграции.

        Проверьте, правильно ли назначены политики безопасности учетной записи, на которой запущена локальная среда IR. Если для действия "Выполнение пакета SSIS" используется проверка подлинности Windows или учетные данные для выполнения заданы в каталоге SSIS (SSISDB), для используемой учетной записи Windows должны быть назначены те же политики безопасности. Дополнительные сведения см. в статье Настройка локальной среды выполнения интеграции в качестве прокси-сервера для среды выполнения интеграции Azure-SSIS IR в ADF.

        Убедитесь, что на компьютере с локальной средой выполнения интеграции установлена среда выполнения Visual C++. Дополнительные сведения см. в статье Настройка локальной среды выполнения интеграции в качестве прокси-сервера для среды выполнения интеграции Azure-SSIS IR в ADF.

        Непредвиденные вызовы выполнения нескольких пакетов

        • Возможная причина и рекомендуемое действие.
          • Действие хранимой процедуры ADF или операция поиска используются для запуска выполнения пакета SSIS. Команда t-sql может вызвать временную ошибку и запустить повторное выполнение, что приведет к выполнению нескольких пакетов.
          • Вместо этого используйте действие ExecuteSSISPackage, которое гарантирует, что выполнение пакета не будет выполняться повторно, если количество повторных попыток не задается пользователем. Дополнительные сведения см. в разделе Запуск пакетов SQL Server Integration Services с помощью действия "Выполнить пакет SSIS".
          • Измените команду t-SQL так, чтобы выполнять повторный запуск после проверки не активировано ли уже выполнение.

          Выполнение пакета занимает слишком много времени

          Ниже приведены возможные причины и рекомендуемые действия.

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

            Определите максимальное количество выполнений по следующей формуле:

            Максимальное количество параллельных выполнений в среде = количество узлов * максимальное количество параллельных выполнений на узел

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

            Задание свойств на вкладке &quot;Общие&quot;

            Также рекомендуется установить продолжительность срока ожидания на вкладке Общие: .

            Низкая производительность при выполнении пакета

            Попробуйте выполнить следующие действия:

            Проверьте, находится ли среда выполнения интеграции Azure-SSIS в том же регионе, что и источник данных и назначение.

            Вы можете установить для уровня ведения журнала выполнения пакета значение Производительность, чтобы собирать более подробные сведения о продолжительности выполнения каждого компонента. Дополнительные сведения см. в статье Ведение журналов в службах Integration Services (SSIS).

            Просмотрите производительность узла среды выполнения интеграции на странице портала Azure.

            Мониторинг метрик среды выполнения интеграции SSIS

            • Сведения о мониторинге среды выполнения интеграции SSIS см. в разделе Среда выполнения интеграции Azure SSIS.
            • Данные об использовании ЦП и памяти для среды выполнения интеграции SSIS можно найти, просмотрев метрики Фабрики данных на портале Azure.

            Возникла необходимость установить компоненту SQL Server Integration Services (SSIS) на одном из узлов двух-узлового кластера SQL Server 2012. Установка именно на один узел потребовалась исходя из того, что SSIS это та служба, которая официально не поддерживается в кластере SQL Server. Хотя конечно в интернете и можно найти примеры кластеризации этой службы в Failover Cluster с помощью Generic Service/Generic Script, но все примеры которые мне попадались на глаза, используют активный экземпляр службы SSIS на обоих узлах кластера, что само по себе противоречит требованиям лицензирования SQL Server в кластере в режиме Active/Passive (если мы хотим лицензировать лишь один активный экземпляр SQL Server). Информацию о том, как можно лицензировать кластеризованные экземпляры SQL Server можно найти в документе Microsoft SQL Server 2012 Licensing Guide .

            Несмотря на интуитивную понятность интерфейса инсталлятора SQL Server, мне сразу не удалось понять то, как это можно сделать на узле уже функционирующего кластера. Изначально было понятно только то, что для до-установки интересующей нас компоненты нужно вызывать тип новой установки – New SQL Server stand-alone installation or add features…

            image

            Дальше по логике был выбран режим добавления компонент в уже существующий кластеризованный экземпляр…

            image

            Однако после этого я получил ошибку на этапе обработки конфигурационных правил…

            image

            Rule "Existing clustered or cluster-prepared instance" failed.

            The instance selected for installation is already installed and clustered on computer SQLServerName. To continue, select a different instance to cluster.

            После этого продолжение процесса установки было невозможно.

            Как выяснилось, для решения этой проблемы на шаге выбора типа установки необходимо выбрать установку вариантом - Perform a new installation of SQL Server 2012…

            image

            …а затем, дойдя до шага выбора устанавливаемых компонент, отметить для установки только интересующую нас компоненту Integration Services

            image

            Так как данная компонента относится к разряду Shared Features, нам не потребуется создавать под неё отдельный экземпляр SQL Server и поэтому инсталлятор нам больше не станет задавать никаких вопросов (кроме типа запуска службы SSIS) и успешно завершит установку…

            В состав Microsoft SQL Server входит компонент SQL Server Integration Services, и сегодня мы узнаем, для чего нужен этот компонент, а также рассмотрим его основные возможности.

            Скриншот 1

            SQL Server Integration Services

            SQL Server Integration Services (SSIS) – это компонент Microsoft SQL Server, который предназначен для автоматизации извлечения, трансформации и консолидации данных из всякого рода источников в другие источники данных. Также службы Integration Services можно использовать и для автоматизации других процессов, например, задач связанных с обслуживанием баз данных или каких-то действий с файлами в операционной системе, в общем SSIS может выступать в качестве своего рода платформы по автоматизации практически всего. И это на самом деле так, например, я, когда впервые узнал о том, что можно сделать с помощью пакета SSIS был удивлен. Поэтому предлагаю сначала рассмотреть основные возможности SQL Server Integration Services, чтобы Вы примерно понимали, на что способен SSIS, все, конечно же, мы не рассмотрим, но общие моменты затронем, а затем перейдем к обзору функционала и инструментов, которые используются в SQL Server Integration Services.

            Примечание! Все приведенные ниже возможности, а также функционал и инструменты по работе с SSIS рассматриваются на примере версии Microsoft SQL Server 2008 R2 в новых версиях, конечно же, возможностей стало больше, а функционал и инструменты стали лучше.

            Основные возможности SQL Server Integration Services

            Функционал SQL Server Integration Services

            Параметры

            В SQL Server Integration Services есть функционал, который позволяет запускать пакеты с параметрами, т.е. мы можем присвоить значения свойствам внутри пакета. Другими словами, мы можем влиять на процесс выполнения пакета, при этом, не изменяя сам пакет. Например, для выгрузки из базы данных нам необходимо знать путь к папке, в которую необходимо положить саму выгрузку, так вот, этот путь мы можем передавать в качестве параметра.

            Циклы

            Службы Integration Services позволяют организовать повторяющийся поток действий в пакете, т.е. цикл. В SSIS есть два вида цикла, которые оформлены в виде контейнера, это «Цикл по элементам», он работает аналогично структуре цикла For и «Цикл по каждому элементу», т.е. своего рода цикл Foreach. Циклы мы можем использовать, например, тогда, когда нам необходимо выполнить одну задачу определённое количество раз и только потом перейти к выполнению другой задачи. Или, например, используя цикл по каждому элементу, мы можем сделать что-то с каждым файлом в папке.

            Переменные

            В пакете SSIS можно использовать переменные, т.е. в процессе выполнения пакета мы можем хранить какие-то временные значения в переменных и использовать их, например, в задачах или контейнерах. Переменные нам могут пригодиться, например, для передачи в SQL инструкцию параметра, который будет формироваться динамически или, например, в цикле для управления итерацией или в задаче «Производный столбец» в процессе преобразования потока данных.

            Транзакции в пакете

            Для обеспечения целостности данных в SSIS есть механизм транзакций, который позволяет фиксировать или откатывать все изменения, произведенные в процессе выполнения задач включенных в транзакцию. Например, в пакете выполняется несколько задач связанных с обновлением данных, мы можем объединить эти задачи в транзакцию, и в этом случае они будут считаться единым целом, т.е. результат этих двух задач будет один, либо успешный, и все изменения сохраняются, либо неудачный, и все изменения отменяются.

            Точки сохранения

            В службах Integration Services пакет можно настроить таким образом, чтобы он использовал точки сохранения (контрольные точки). Механизм следующий, если пакет настроен на использование контрольных точек, то сведения о выполнении пакета записываются в специальный файл, и он используется при перезапуске давшего сбой пакета, для того чтобы запустить пакет с момента сбоя. Если выполнение пакета завершено успешно файл контрольных точек удаляется, а затем при новом запуске создается повторно.

            Например, у Вас есть несколько задач, которые выполняют загрузку большого объема данных, и допустим, одна задача выполнилась успешно, при этом она работала, скажем, пару часов, а в момент выполнения второй задачи произошёл обрыв связи. Если использовать точки сохранения, то в случае устранения поломки ждать два часа пока выполнится первая задача, не придется, так как пакет знает, что она уже успешно завершилась.

            Отслеживание и перехват ошибок

            В ходе выполнения пакета SSIS могут возникнуть непредвиденные ошибки, в связи с этим службами Integration Services предусмотрен функционал отслеживания и перехвата ошибок. Другими словами, в случае возникновения в пакете какой-то ошибки, мы можем ее отследить и передать управление другой задаче или обработчику этого события, для того чтобы пакет аварийно не завершился, а отработал корректно.

            Журналирование

            Для того чтобы быть в курсе всего того, что происходят внутри пакета, в SQL Server Integration Services есть функционал, позволяющий вести журнал, который будет фиксировать все события в процессе выполнения пакета. В SSIS предусмотрено несколько вариантов ведения журнала, например, записывать все в текстовом или XML файле, или, например, в журнале событий Windows, и, конечно же, есть вариант сохранять записи журнала в базе SQL Server.

            Инструменты для работы с SQL Server Integration Services

            Давайте рассмотрим несколько инструментов и программ, которые входят в состав служб Integration Services.

            Служба SQL Server Integration Services

            Это служба Windows, которая и выполняет обработку пакетов. На компьютер ее можно установить только в одном экземпляре.

            Среда SQL Server Business Intelligence Development Studio

            Скриншот 2

            Среда SQL Server Management Studio

            С этой средой я думаю, Вы уже знакомы, в службах Integration Services она выступает в качестве инструмента управления пакетами, а также инструментом наблюдения, т.е. в ней можно увидеть какие пакеты в данный момент выполняются. Также с помощью Management Studio можно запускать, импортировать, экспортировать пакеты и создавать каталоги в файловой системе для их хранения.

            Скриншот 3

            Программы командной строки

            Запускать пакеты, а также управлять ими можно из командной строки для этого служат следующие программы:

            • dtexec – программа для запуска пакетов;
            • dtutil – программа для управления пакетами.

            Заметка! Если Вас интересует SQL и T-SQL, рекомендую посмотреть мои видеокурсы по T-SQL, с помощью которых Вы «с нуля» научитесь работать с SQL и программировать с использованием языка T-SQL в Microsoft SQL Server.

            Читайте также: