【发布时间】: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