2015-06-10 41 views
0

我使用SQL Server代理来填充DataWarehouse中的表。我在工作中有大约50个步骤,并且每个步骤都使用代理帐户运行。除了一个步骤外,每一步都能正常工作:SSIS包执行成功,但没有完成其工作

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目录执行包,它工作正常。但是,如果它按工作运行,它会成功,但只能从表中删除,但不会填充它。程序似乎停在中间的某个地方。

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

+0

一注意:我不能使用transact sql查询,因为它不允许代表我们的服务器上的代理帐户运行 –

+0

您是什么意思,它只会删除但不填充它?我似乎没有发现任何删除/填充与您的脚本。从哪里读取数据以填充表格?它是数据文件夹中的文件吗? – BICube

+0

使用SQL事件探查器观察SP在做什么。当SP运行时,您可以监视SP内部的内部语句。这会给你一些线索的理由。 –

回答

0

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

+0

嗨,是的,就是这样。今天早上我意识到PROXY ACCOUNT没有许可处理BULK INSERT。我只授予常规数据库写入权限并从文件夹读取文件。没有意识到有单独的批量管理权限。 –

相关问题