针对“sql server代理中作业执行SSIS包失败”的问题,我们可以按照以下步骤解决:
1. 确认项目及包的可靠性
在执行前,我们需要先确认项目及包的可靠性,可以通过以下方式进行验证:
1.1 在BIDS(SSDT)中测试SSIS包
我们可以在BIDS(或SSDT)中测试SSIS包,在环境较为稳定的情况下可以正常运行,那么我们需要询问自己下面的问题:
- 1.1.1 项目中执行的所有作业是否都能够正常运行?
- 1.1.2 如果针对作业进行了更改,是否应重新生成并部署项目?
1.2 在SSIS服务器上测试SSIS包
我们可以在SSIS服务器上测试SSIS包,如果可以正常运行,则表明SSIS包本身没有问题,那么我们需要问自己下面的问题:
- 1.2.1 该SSIS包能否成功运行?
- 1.2.2 那么,作业是否是由代理或其他系统元素引起的问题?
2. 确认代理帐户中SSIS特定权限
检查代理帐户是否有正确的特定权限。如果未对代理帐户提供必要的权限,则作业将无法正常运行。以下示例演示了如何为代理帐户提供必要的权限。
2.1 确认代理帐户具有文件系统权限
代理帐户需要在目标服务器上具有文件系统权限。如果代理帐户未有文件系统权限,可以使用以下选项进行修复:
- 将代理帐户添加到SSIS安装文件夹的目录中,并授予代理帐户完全控制权限。
- 将代理帐户添加到目标服务器上的源文件夹中,并授予代理帐户完全控制权限。
2.2 确认代理帐户具有SQL Server集成服务(SSIS)角色
代理帐户需要具有SSIS角色,以便访问系统的集成服务。以下示例演示了如何为代理帐户添加此角色。
USE [msdb]
GO
EXEC sp_addrolemember N'SsisOperator', N'SQLServerAgent'
3. 检查SQL Server代理服务是否正在运行
我们需要确保SQL Server Agent服务已运行,以下示例演示如何检查该服务是否可用:
SELECT * FROM sys.dm_server_services WHERE servicename = 'SQLSERVERAGENT'
4. 在SQL Server的代理中启用SSIS包的运行
我们需要确保SQL Server Agent代理已启用SSIS包的运行,并为SQL Server的代理启用SSIS包运行。以下示例演示如何启用SSIS包的运行:
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO
USE msdb
GO
EXEC dbo.sp_set_sqlagent_properties
@jobhistory_max_rows=1000,
@jobhistory_max_rows_per_job=1000,
@jobhistory_cleanup_agent_spid=0,
@jobhistory_date_range_length=365;
GO
这些基本的步骤应该能够解决“sql server代理中作业执行SSIS包失败”的问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:sql server代理中作业执行SSIS包失败的解决办法 - Python技术站