2017-01-31 49 views
4

我有一个SSIS包来从网络驱动器加载excel文件。它旨在加载内容,然后将文件移动到存档文件夹。SSIS包从SSMS工作,但不是从代理作业

当以下SQL语句在SSMS窗口中运行时,一切正常。

但是,当它复制到SQL代理作业并从那里执行时,该文件既不加载也不移动。但它从代理日志中显示“成功”。

同样的事情也发生在代替T-SQL作业 “SSIS工作”,甚至与Windows帐户代理。(同一个帐户登录SSMS)

Declare @execution_id bigint 
EXEC [SSISDB].[catalog].[create_execution] @package_name=N'SG_Excel.dtsx', @[email protected]_id OUTPUT, @folder_name=N'ETL', @project_name=N'Report', @use32bitruntime=True, @reference_id=Null 
Select @execution_id 
DECLARE @var0 smallint = 1 
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=50, @parameter_name=N'LOGGING_LEVEL', @[email protected] 
EXEC [SSISDB].[catalog].[start_execution] @execution_id 
GO 

附:首先应用网络驱动器的相对路径,然后切换到绝对路径(\\ server \ folder)。这不是解决问题。

+0

您是否已尝试从Visual Studio中执行SSIS包?你有没有尝试过你的SSMS用户和代理用户?您是否收到任何警告/错误/调试信息? – Tyron78

+0

@ Tyron78,它在Visual Studio中运行良好。是的,我尝试使用代理设置SSIS SQL代理作业,但它仍然无法正常工作... – Echo

+0

@ Tyron78奇怪的是作业显示“成功”,没有错误消息。 – Echo

回答

0

我个人以避免文件系统任务 - 我发现它不可靠。我将用脚本任务替换它,并使用来自命名空间的.NET方法,例如, File.Move。这些方法更可靠,并具有成熟的错误处理。

下面是System.IO命名空间的起点:

https://msdn.microsoft.com/en-us/library/ms404278.aspx

一定要选择使用其他版本链接相关的.NET版本。

0

当我在过去看到类似这样的事情时,我的软件包没有访问我认为是在运行时的路径,它正在其他地方寻找,找到一个空文件夹&退出成功。

SSIS可以有一个讨厌的习惯,回到可变的默认值。它可能正在寻找你在开发中使用的不同路径?也许硬编码所有路径值作为测试?或放在中断点&仔细检查所有变量&参数的运行时间值。

其它远射可能是:

  • 名称解析,你确定网络名称在运行时正确地解决?

  • 32/64位问题。开发者倾向于运行32位,活着可能是64位。可能会干扰文件路径?运行时可能强制为32位?

0

有问题,与不具有语句终止SQL语句;是导致问题()。

Declare @execution_id bigint ; 
EXEC [SSISDB].[catalog].[create_execution] @package_name=N'SG_Excel.dtsx', @[email protected]_id OUTPUT, @folder_name=N'ETL', @project_name=N'Report', @use32bitruntime=True, @reference_id=Null ; 
Select @execution_id ; 
DECLARE @var0 smallint = 1 ; 
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=50, @parameter_name=N'LOGGING_LEVEL', @[email protected] ; 
EXEC [SSISDB].[catalog].[start_execution] @execution_id ; 
GO 

我所面临的业务代理类似的问题..

1

SSIS包作业的SQL Server代理的环境下运行。设置了哪些帐户以在SQL Server上运行SQL Server代理?它可能需要作为有权访问网络共享的域帐户运行。

或者您可以将Excel文件复制到SQL Server上的本地文件夹,以便软件包可以访问该文件。

相关问题