Фильтр переменных SSIS для другой таблицы в несвязанной базе данных - PullRequest
2 голосов
/ 24 апреля 2019

Я загружаю набор данных из Excel на локальный сервер, который мы используем для запуска автономных запросов, и хочу использовать информацию в этой таблице для фильтрации по таблице, которая находится в нашей производственной системе, чтобы я мог затем просмотреть отфильтрованныетаблица на локальную БД, а не вытягивать всю таблицу из prod в нашу локальную.Я смотрел на создание переменной, которая содержала бы все номера счетов в строке, а затем использовал это в выражении IN (?).Это сработало, но оно подняло только первую учетную запись в строке, а не остаток.

Я не могу создать временную таблицу в prod или что-либо еще, поскольку она заблокирована только для администратора баз данных.Я пробовал некоторые вещи в SSIS, такие как создание переменных и т. Д., Но это не сработало.Я пытаюсь избежать сброса всей таблицы.Если мне нужно сделать это, я настрою его для обновления из действительного поля from для захвата новых записей.

SELECT
*
FROM account_table
where [account number] in (?)

Я создал?переменная в отдельном окне выполнения задачи SQL, где?

select
string_agg([account number], ', ')
from [distinct account_table].

Я также пробовал:

select
string_agg([account number], ',')
from [distinct account_table]

, но это не сработало.

Ответы [ 2 ]

2 голосов
/ 24 апреля 2019

Вы можете использовать выражения вместо передачи параметров.

Откройте редактор Execute SQL Task, перейдите на вкладку Expressions, добавьте новое выражение для свойства SqlStatementSource, как показано ниже:

"SELECT
 *
 FROM account_table
 where [account number] in ('" + 
 @[User::Variable] + "')"

С другой стороны, если я сталкиваюсь с подобной ситуацией, я буду использовать преобразование поиска для этого вместо операторов SQL.

0 голосов
/ 24 апреля 2019

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

Я мог бы упустить что-то очевидное здесь .. Вы говорите, что загрузили набор данных в свою локальную базу данных, и теперь вы хотите получить данные от prod, который содержит эти учетные записи.

Мое предложение состоит в том, чтобы создать поток данных и использовать источник oledb для получения данных из prod. Затем добавьте поиск, который присоединяется к вашему набору данных в вашей локальной базе данных (присоединитесь к учетной записи, убедитесь, что вы подключаетесь к своей локальной базе данных и перенаправляете не соответствующие строки в выходные данные без совпадений). Затем добавьте адресат oledb для загрузки данных в локальную базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...