我正在尝试通过防火墙验证连接,并且我们在允许的访问中非常有限。最终,数据将使用SSIS包从另一台服务器上的Access数据库加载到我们的SQL Server数据库。我可以从我的计算机ping该源服务器并获得回复 - 我想将它放在我们的SSIS包中,看看目标SQL Server是否可以获得ping响应。
现在,OLE DB源连接从我的计算机和服务器都失败,ping直接从我的计算机上运行,我不知道它是否可以在服务器上运行。 SSIS是我可以在服务器上放置和运行的唯一东西,它也是我们计划用于从其他来源获取数据的。
是否有一种使用SSIS包ping特定地址的相当简单的方法?我可能甚至不需要知道它是否失败或工作。
我无法使用sys.sp_comdshell,因为它是我们的sql server安全配置的一部分。我无法远程访问服务器并直接使用ping。
答案 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;
}
}
}