小编Dan*_*ask的帖子

SSIS:FTP任务 - 并发连接

我已经创建了一个SSIS包,用于从FTP服务器下载文件.当我调试包时,一切都很顺利.但是,当我将程序包作为Job步骤进行处理时,它有时无法连接.该作业每4小时重复一次,平均每个其他运行失败,错误:0xC002918F - 登录请求被拒绝.

该连接是匿名的,不需要密码

我已经测试了几个小时了,发现了一些信息:

  • 在FileZilla中测试时,我发现服务器拒绝尝试下载文件的第二个连接.将最大并发连接数设置为1可使其在FileZilla中运行
  • 命令行中的FTP命令工作正常.也许是因为它在每次成功命令后关闭连接
  • 在FTP连接管理器中,我没有找到限制连接数的选项

我无法看到FTP服务器的设置.最让我困惑的是,一些已经完成的任务工作得很好而有些失败了.我没有发现任何规律性.

到目前为止我尝试了什么:

  • 主动/转动模式
  • 将FTP连接管理器中的重试限制为1
  • 转移时间,因此它不会与尝试从服务器下载的任何其他(较旧的)任务发生冲突
  • 将FTP任务设置为ASCII模式(服务器对FileZilla说,它只接受ASCII字符)

到目前为止没有运气.还有一些尝试成功,有些则没有.

编辑:

FTP服务器位于Simatic设备上.

本周,我每隔1小时保持一次,每隔30秒就会对设备进行一次ping操作.仍有一些SSID尝试没有成功,每次ping都会通过: - /

sql-server ftp connection concurrency ssis

12
推荐指数
1
解决办法
844
查看次数

JDBC Microsoft SQL超时未触发

我正在sqljdbc4.jar通过wifi从我的应用程序连接到SQL Server。连接工作正常,也可以进行查询,但是有时wifi掉线了,我需要做出反应-尝试重新连接,然后通知用户连接失败。

问题是,即使我设置了查询超时,在断开连接的情况下执行也会挂起,并且不会SqlTimeoutException触发任何操作。

连接(删除用户名和psw):

SQLconnection = DriverManager.getConnection("jdbc:sqlserver://%address%;user=%UserName%;password=%password%;database=%db_name%");

SQLSelectStatement = SQLconnection.createStatement();
SQLSelectStatement.setQueryTimeout(2);
Run Code Online (Sandbox Code Playgroud)

执行查询:

String sql = "%my query%";
ResultSet rs;
try {
    rs = SQLSelectStatement.executeQuery(sql);
} catch (SQLException sqle) {
    ConnectSQL(); //try to connect again
    rs = SQLSelectStatement.executeQuery(sql);
}
Run Code Online (Sandbox Code Playgroud)

如果该方法抛出SQLException,我将通知用户并继续。但是,即使在连接丢失的情况下,也永远不会抛出异常。

我该怎么解决?我尝试在基于MSDN的连接字符串中设置lock-timeout和logintimeout ,方法SQLconnection.setNetworkTimeout也会触发错误(如果我理解正确,则不会在Microsoft驱动程序中实现)。

我能想到的最后一个解决方案是自行实现某种超时,该超时将在一定时间后停止查询线程。但是我不会重新发明轮子。

java sql-server jdbc

0
推荐指数
1
解决办法
4427
查看次数

标签 统计

sql-server ×2

concurrency ×1

connection ×1

ftp ×1

java ×1

jdbc ×1

ssis ×1