如何在SSIS包中ping?

时间:2011-07-05 21:32:01

标签: sql-server sql-server-2008 ssis ping

我正在尝试通过防火墙验证连接,并且我们在允许的访问中非常有限。最终,数据将使用SSIS包从另一台服务器上的Access数据库加载到我们的SQL Server数据库。我可以从我的计算机ping该源服务器并获得回复 - 我想将它放在我们的SSIS包中,看看目标SQL Server是否可以获得ping响应。

现在,OLE DB源连接从我的计算机和服务器都失败,ping直接从我的计算机上运行,​​我不知道它是否可以在服务器上运行。 SSIS是我可以在服务器上放置和运行的唯一东西,它也是我们计划用于从其他来源获取数据的。

是否有一种使用SSIS包ping特定地址的相当简单的方法?我可能甚至不需要知道它是否失败或工作。

我无法使用sys.sp_comdshell,因为它是我们的sql server安全配置的一部分。我无法远程访问服务器并直接使用ping。

1 个答案:

答案 0 :(得分:1)

您可以使用一些为您执行ping操作的代码向控制流添加脚本任务。 .NET 2.0及更高版本中的System.Net.NetworkInformation命名空间包含一个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;
        }
    }
}