Stored procedures 从存储过程执行SSIS包超时

Stored procedures 从存储过程执行SSIS包超时,stored-procedures,ssis,timeout,Stored Procedures,Ssis,Timeout,我有一个难题,我被难住了,希望你们能帮助我 下面是我的场景:我通过web界面将数据加载到数据库中。首先,我将文件上传到SQL框中,然后调用脚本提取数据并将其加载到SQL中 我最近更改了这个过程,因此现在,我调用一个存储过程来执行脚本,而不是从web应用程序中执行包 以下是我的代码的核心: CREATE PROCEDURE [dbo].[ExecuteSsisPackage] @Package NVARCHAR(100), AS BEGIN SET NOCOUNT ON; DECLARE @ex

我有一个难题,我被难住了,希望你们能帮助我

下面是我的场景:我通过web界面将数据加载到数据库中。首先,我将文件上传到SQL框中,然后调用脚本提取数据并将其加载到SQL中

我最近更改了这个过程,因此现在,我调用一个存储过程来执行脚本,而不是从web应用程序中执行包

以下是我的代码的核心:

CREATE PROCEDURE [dbo].[ExecuteSsisPackage]
@Package NVARCHAR(100),
AS
BEGIN

SET NOCOUNT ON;
DECLARE @executionID BIGINT
EXEC SSISDB.catalog.create_execution
    @folder_name = 'Imports', -- nvarchar(128)
    @project_name = 'DataImports, -- nvarchar(128)
    @package_name = @Package, -- nvarchar(260)
    @use32bitruntime = 1, -- bit
    @execution_id = @executionID OUTPUT -- bigint
SELECT @executionId

EXEC [SSISDB].[catalog].[set_execution_parameter_value] @executionId, 50, N'SYNCHRONIZED', @parameter_value = 1 -- turn on synchronization
EXEC ssisdb.catalog.start_execution @executionID;
RETURN (@executionID)
END
奇怪的是:当我从ManagementStudio运行存储过程时,它执行得很好。但是,当我从web应用程序执行此操作时,它会超时。但是,如果我关闭同步,它通过web应用程序可以正常执行。禁用同步的问题是,在加载数据后,我需要从数据中提取一些摘要信息

我甚至尝试从我发现的一篇帖子中滚动我自己的“同步”:

DECLARE @status AS BIGINT = 1;
WHILE(@status = 1 OR @status = 2 OR @status = 5 OR @status= 8)
BEGIN
    PRINT 'Status: ' + CAST(@status AS VARCHAR(10))
    PRINT 'waiting 2 seconds for Package to finish'
    WAITFOR DELAY '00:00:2';

    SET @status = (SELECT [Status] FROM SSISDB.[catalog].[executions]
            WHERE execution_id = @executionID);
END

PRINT 'Exit Status: ' + CAST(@status AS VARCHAR(10))
这也会超时。我做了一些挖掘,发现当SP从web(而不是management studio)执行时,有一个锁:LCK_M_S,wait_资源是:KEY:9:72057594041532416(d28bcafb8df)。同样,这仅在从web应用程序执行SP时发生


经过进一步挖掘,找到了锁的罪犯。它是SSISDB.internal.Operations表的PK_操作键。这就是难题所在。你知道为什么只有通过网络才会发生这种情况吗?如果你打开一个与Hello World相当的软件包,你是否也会经历同样的行为?包运行时,SSIDB中记录了什么?当它通过web运行时,您看到日志消息与您的日志消息有什么不同吗?执行包的网站是哪个帐户?如果您通过
RUNAS
以同一用户的身份启动SSM,是否可以重新创建问题?2012年还是2014年?服务器在修补程序级别1上的性能如何。我尝试过各种类似的软件包,它们也有同样的情况,所以它不是特定于软件包的。错误:请求的OLE DB提供程序Microsoft.Jet.OLEDB.4.0未注册。如果未安装64位驱动程序,请以32位模式运行程序包。错误代码:0x00000000。OLE DB记录可用。来源:“Microsoft OLE DB服务组件”Hresult:0x80040154说明:“类未注册”。DTS_E_无法从ConnectionManager获取重新连接。对连接管理器“源”的AcquireConnection方法调用失败,错误代码为0xC0209303。在此之前可能会发布错误消息,其中包含有关AcquireConnection方法调用失败原因的详细信息。3。当“run synchronized”为true时,web将失败。当设置为false时,它将从web成功。不管怎样,它在ManagementStudio中运行时都会成功。当它通过网络或MS.4获得成功时,我看不出有什么不同。应用程序池标识:我正在以默认IIS APPPOOL\identity运行它,但它具有必要的权限。我已尝试将应用程序池使用的帐户更改为我自己的帐户,并且出现了相同的行为。