Я должен консолидировать данные из 1000 + баз данных, имеющих одну и ту же структуру / таблицы в одном уникальном БД. DB могут быть добавлены и удалены потенциально на ежедневной основе, поэтому мне нужно динамически извлекать список БД и запускать динамически сгенерированный SQL-запрос для извлечения данных по каждому из них.
Я разработал поток данных с запросом переменной, которая работает нормально, если выполняется со статическим значением:
С задачей SQL я получаю список экземпляров, я их перебираю и с помощью вложенной задачи Loop / SQL Foreach я получаю имена базы данных и создаю динамический SQL со следующим утверждением (имя базы данных анонимно):
SELECT 'select' '' + name + '' 'как DatabaseName, ID из' + name + '. [Dbo]. [Заказы] как querytext FROM sys.databases WHERE name LIKE (' XXX% _% ');
Эта часть также отлично работает:
Как я могу использовать результат задачи SQL «Выполнение SQL-задачи - Получить текст запроса» в качестве запроса, который должен быть выполнен в источнике «OLE DB Source 1» (часть «Задача 3 потока данных»)?
Я попытался сопоставить объектную переменную «User :: SqlCommandFromSQLTask» в результирующем наборе задачи SQL, а затем установить ее как переменную источника объекта ADO и задачу скрипта преобразовать ее в строку и передать значение переменной SqlStringFromSQLTask3 (используемой как источник в «OLE DB Source 1»), но я получаю ошибку «Нарушение ограничения PRIMARY KEY», например, если поток данных всегда работает со статическим значением, которое я настроил по умолчанию:
Хотя, если я удалю значение из панели переменных, я получаю сообщение об ошибке «Текст команды не был установлен для объекта команды». Даже изменение свойства DelayValidation потока данных на false.
Буду признателен за любую оказанную помощь.
sql-server,ssis,etl,dynamic-sql,