У меня есть пакет служб SSIS, который выполняет следующие действия:
Выбирает строки подключения из таблицы серверов. Строка подключения - это либо имя сервера вместе с доменом (то есть Dalin.myhouse.com), либо прямой IP-адрес сервера.
Пакет перебирает каждую строку подключения и заполняет определенную «глобальную» переменную. Эта переменная была создана в конструкторе переменных. Для каждой строки подключения пакет будет извлекать информацию о сервере.
Проблема, с которой я сталкиваюсь, заключается в том, что когда вы добавляете IP-адрес сервера в список, «Дружественное имя» может быть неизвестно в то время, поэтому я бы просто указал IP-адрес сервера в столбце строки подключения и понятном имени. столбец таблицы. Я хочу после окончания итерации обновить столбец Friendly Name записи сервера в этой таблице, чтобы имя сервера извлекалось с сервера с помощью SERVERPROPERTY ('Servername')
Для этого я хотел бы использовать задачу ExecuteSQL со следующим кодом:
UPDATE [myDB].[mySchema].[myServers]
SET [ServerName] = VarA
WHERE ConnectionString = VarB
Предыдущий код использует статическое соединение с сервером, на котором находится таблица myServers.
VarA представляет глобальное значение, которое я хочу установить для ServerName, которое будет установлено в отдельной SQLTask с использованием SERVERPROPERTY ('Servername'). Он должен быть в отдельной задаче, потому что он должен был бы соединиться с сервером, используя тот же сервер, который использует текущая итерация.
VarB устанавливается в начале каждой итерации для следующей строки подключения в списке.
Я видел примеры того, как использовать это для Задачи сценария и Компонентов сценария, но я хотел бы просто использовать задачу ExecuteSQL для достижения этой цели.
Резюме:
Подключитесь к ServerA и заполните две глобальные переменные.
Подключитесь к ServerB и используйте две глобальные переменные для обновления определенной строки в таблице.
Есть идеи?