【问题标题】:SSIS package execution succeeds but doesn't do its jobSSIS 包执行成功但没有完成它的工作
【发布时间】:2015-06-10 21:06:48
【问题描述】:

我使用 SQL Server 代理来填充 DataWarehouse 中的表。我的工作大约有 50 个步骤,每个步骤都使用代理帐户运行。除了一个之外,每个步骤都可以正常工作:

SSIS 包,其中包含大约 20 个执行 SQL 任务,它们执行过程。这就是我在执行 SQL 任务中的内容:

DECLARE @RC int

DECLARE @fordate datetime = null

DECLARE @tablename sysname = 'D_ENTITY'

DECLARE @dataFolder varchar(1024) = 'C:\MountPoints1\src_etl\'

DECLARE @logFolder varchar(1024) = 'C:\MountPoints1\src_etl\'

DECLARE @debug bit = 0

EXECUTE @RC = [dbo].[ETL1A_HR] 
 @fordate
,@tablename
,@dataFolder
,@logFolder
,@debug
GO

问题是,如果我从 SSIS 目录执行包,它可以正常工作。但是如果是按作业运行的,它会成功,但只是从表中删除,而不是填充它。似乎该过程在中间的某个地方停止了。

有什么想法吗? 请指教,我花了几天的时间试图解决这个问题......

【问题讨论】:

  • 注意:我不能使用事务 sql 查询,因为它不允许在我们的服务器上代表代理帐户运行
  • 只删除不填充是什么意思?我似乎没有发现您的脚本有任何删除/填充。它从哪里读取数据以填充表格?它是数据文件夹中的文件吗?。
  • 使用 SQL Profiler 观察 SP 正在做什么。您可以在运行时监视 SP 内部的内部语句。这将为您提供一些有关原因的线索。
  • 嗨 - 过程中有两个步骤 - 截断和批量插入。并且批量插入不起作用,因为代理帐户没有bulkadmin权限(现已解决)。但是包没有失败,因为我实现了一个 Try/Catch 逻辑,它会向对话框窗口抛出错误(但通过代理执行时它不会引发对话框窗口:))

标签: sql-server ssis package sql-server-agent


【解决方案1】:

我认为这可能与权限有关。执行 SSIS 包将使用您的安全上下文,但从代理运行它会模拟代理中定义的凭据,然后使用该安全上下文运行作业步骤。

【讨论】:

  • 嗨,是的,就是这样。我今天早上意识到代理帐户没有处理 BULK INSERT 的权限。我只授予常规数据库写入权限和从文件夹中读取文件的权限。没有意识到单独有批量管理员权限。
猜你喜欢
  • 1970-01-01
  • 2018-09-06
  • 1970-01-01
  • 2015-08-11
  • 1970-01-01
  • 2022-11-06
  • 2021-11-23
  • 2015-09-26
  • 1970-01-01
相关资源
最近更新 更多