Как пинговать из пакета служб SSIS? - PullRequest
1 голос
/ 06 июля 2011

Я пытаюсь проверить соединение через брандмауэр, и мы очень ограничены в доступе. В конечном итоге данные будут загружены из базы данных Access на другом сервере в нашу базу данных SQL Server с использованием пакета служб SSIS. Я могу пропинговать этот исходный сервер со своего компьютера и получить ответ - я хочу поместить его в наш пакет служб SSIS и посмотреть, может ли целевой SQL-сервер получить ответ на пинг.

В настоящий момент не удается установить соединение с источником OLE DB как с моего компьютера, так и с сервера, ping работает непосредственно с моего компьютера, и я не знаю, будет ли оно работать с сервера или нет. SSIS - это единственное, что я могу установить и запустить на сервере, а также то, что мы планируем использовать для получения данных из этого другого источника.

Существует ли довольно простой способ использования пакета служб SSIS для проверки связи с конкретным адресом? Мне, вероятно, даже не нужно знать что-то большее, чем то, терпит ли это неудачу или работает.

Я не могу использовать sys.sp_comdshell, потому что он отключен как часть нашей конфигурации безопасности для нашего сервера sql. Я не могу удаленно подключиться к серверу и напрямую использовать ping.

1 Ответ

1 голос
/ 06 июля 2011

Вы можете добавить задачу скрипта в ваш поток управления с помощью некоторого кода, который выполняет пинг для вас.Пространство имен System.Net.NetworkInformation в .NET 2.0 и выше содержит класс Ping, который может выполнить эту работу за вас.Я подозреваю, что это может выглядеть примерно так:

public void Main()
{
    using (Ping ping = new Ping())
    {
        try
        {
            PingReply reply = ping.Send(url, 100);
            if (reply.Status == IPStatus.Success)
            {
                Dts.TaskResult = (int)ScriptResults.Success;
            }
            else
            {
                Dts.TaskResult = (int)ScriptResults.Failure;
            }
        }
        catch
        {
            Dts.TaskResult = (int)ScriptResults.Failure;
        }
    }
}
...