2015-03-09 5 views
0

Я работаю над проектом, где мне нужно выполнять поиск на сервере хранилища данных в Integration Services. Моя проблема в том, что мне нужно иметь возможность изменить, к какой базе данных я выполняю поиск. Базы данных конструктивно идентичны.SSIS Поиск нескольких идентичных баз данных

Я решил эту проблему с помощью компонента сценария до того, где для каждой строки, если идентификатор базы данных изменился, изменения соединения, например, ниже

try { 
    if (databaseNr != Row.DatabaseNr) { 
    try { 
     databaseNr = Row.DatabaseNr; 
     currentCatalog = "db" + Row.DatabasNr; 
     connection.ChangeDatabase(currentCatalog); 
    } catch (Exception e) { 
     ComponentMetaData.FireWarning(0, ComponentMetaData.Name, e.Message, "", 0); 
    } 
    } 
string command = "SELECT Id, Name, Surname FROM [" + currentCatalog + "].[TableName] WHERE Id = '" + Row.OrderID + "'"; 

Но это позволит сэкономить мне много хлопот, если это было возможно с помощью компонента lookup.

Так что мой вопрос: возможно ли каким-либо образом использовать данные столбцов, чтобы изменить базу данных для выполнения поиска с помощью компонента Lookup?

Благодарен за любую помощь!

+0

ли базы данных на одном сервере? В этом случае вы можете динамически создать запрос поиска вне потока задач. – Ako

+0

Да, базы данных находятся на одном сервере. Я не совсем уверен, как это возможно, не могли бы вы объяснить дальше? – August

+1

Помогите мне понять: ваш исходный запрос имеет некоторый идентификатор, чтобы указать, в каком каталоге находятся данные. В этих каталогах есть согласованные объекты (вероятно, у вас есть физически сегментированные клиенты по каталогу, чтобы предотвратить близость данных), и вам нужно запустить некоторый запрос через все они (возможно, отчет о выставлении счетов). Это точно? Как спросил Ако, возможно ли, что Client20 вдруг накапливает так много данных, что вам нужно подтолкнуть их к своему серверу? – billinkc

ответ

1

Что вы можете сделать, это:

  • управления потоком Goto
  • Выберите задачу потока данных
  • Гото свойства и выберите компонент подстановок
  • Создать выражение для поиска, вы можете использовать запрос, подготовленный в задаче скрипта.

enter image description here

+0

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

+0

Он считает, что это будет очень неэффективно, чтобы изменить его на строку. Поведение по умолчанию - предварительная загрузка данных для поиска до начала потока данных. Вы можете отключить его. Но рассмотрите предварительную загрузку данных из всех баз данных (я не знаю размер) и добавление столбца с именем базы данных и совпадением с ним. – Ako

+0

Я думаю, что все работает нормально, я просто хочу лучше, потому что мне нужно написать этот скрипт поиска в нескольких местах. и я изменяю базу данных только при изменении идентификатора. Предварительная загрузка могла бы работать, если бы она была меньше, но это своего рода огромная база данных с примерно 30 (идентичными) базами данных. Спасибо хоть :) – August

Смежные вопросы