【发布时间】:2013-09-20 16:17:18
【问题描述】:
我从 Adobe AIR 应用程序运行 SSIS 包时遇到问题。我不太确定问题出在哪里,所以我希望这对于在正确领域有知识的人来说是显而易见的!
首先介绍一下我的架构(如果你可以这么称呼的话)。
我有一个 Adobe AIR 应用程序。此应用程序使用经典的 asp 页面来建立与 sqlserver 数据库的连接。然后它将字符串传递给数据库。任何响应都通过 ASP 页面返回到 Air 应用程序,该页面将数据包装为 xml 消息。这适用于我在过去一年左右不得不抛出的大多数事情,例如选择、插入、存储过程的执行等。
我现在希望用户能够执行 SSIS 包。我处理这个的方式是有一个存储过程'RunPopulateRPTSchema'。然后通过单击 Air Web 应用程序上的按钮来运行它。在过程中是对运行包的 SQL 代理的调用: EXEC msdb..sp_start_job N'PBMIPopulateRPTSchema'
我有一些处理来确保 proc 正在运行,并循环直到它完成,并且在完成时选择插入了多少行。这是应该返回给用户以定义成功的内容。我的问题是该消息没有返回到 ASP/AIR 并最终超时。
我在 Sql Server Profiler 中进行了跟踪...它告诉我 IIS 中止了进程,我认为这就是我没有得到响应的原因。我不确定是否应该设置一些东西来允许这样做!
如果我通过 Sql Management Studio 运行此程序,使用相同的 ID 一切正常 - 不会中止。这似乎有点奇怪,但有什么想法吗?我认为这是 IIS 的超时问题,但我不能确定,也不确定在哪里重置它。
另外一点信息 - 包通过 SSIS 完成并且数据得到更新,但我没有在我的应用程序中获得该信息
干杯
安德鲁
【问题讨论】:
-
我对这种方法很感兴趣也很害怕
-
哈哈。您需要通过您的 ..erm.. 架构重新开始工作,并记录每一步并找出失败的地方。那么...该软件包在 BIDS 中以交互方式工作?当您手动运行 SQL 作业时它是否工作?当您从应用程序调用 SQL 作业时,它是否启动?通常这是一个权限问题。基本上你需要在每一步做更多的调查,找出失败的地方。让您认为“IIS 中止进程”的信息是什么? - 准确地发布你所看到的。我的猜测是IIS账号没有足够的权限调用sp_start_job
-
是的 - '架构'......它不是很好。只是要清楚 - 工作由网页中的用户启动。一切运行良好,只是没有报告回来。每次查看 IIS 的“中止”都会在进程中发生 30 秒,这就是为什么我认为这是某些描述的超时 - 而不是权限问题。鉴于这种方法既可笑又可怕,你会怎么做?
-
我将其更改为运行需要几秒钟的虚拟 proc,并且它有效 - 排除了权限等。信息返回到我的应用程序。当我在 WAITFOR DELAY '00:00:35' 语句中添加时,SqlServer Profiler 中显示中止......任何想法!有可以更改的设置吗? asp中的Server.ScriptTimeout不影响它,所以我认为这是一个IIS问题,但我对此了解不多。
标签: sql-server apache-flex iis air ssis