2011-09-29 140 views
1

大家好,我用头撞墙,希望有人能帮上忙。我有一个用BIDS 2005编写的ssis包,它基本上从DatabaseA中的表中选择一些数据行并将数据传输到DatabaseB中的表中。它是一个相当简单和容易的SSIS包。我已经在我们的开发服务器上安装了该软件包(正在运行sql server 2008 r2)到集成服务中。当我用我的用户名(v_ashby-smith)登录到服务器并通过集成服务直接运行程序包时,程序包成功完成并按预期方式移动数据。SQL Server和SSIS权限问题?

我希望程序包按计划运行,所以我在sql server代理下创建了一个作业。现在,当我运行作业时,程序包表示它成功完成,但是当检查目标数据库表(DatabaseB)时,表中的所有数据都已被擦除! SSIS包不会直接删除它,只是复制数据。 sql server代理服务已设置为以域用户COMPANY \ devsqladm运行,并且已创建了sql server中的用户,并具有访问所需数据库的必要权限。

为了增加这个难题,当我在BIDS中运行包时,它工作正常并按预期复制数据!

如果任何人有任何想法,我真的很感激它,这应该是比它变得更简单!

+0

因此,SQL Server代理程序作业的“步骤”列表中只有一个项目,并且运行SSIS程序包的所有项目都正确? – jadarnel27

+0

是的,这是正确的 –

+0

当在SQL Server Management Studio中使用导入/导出向导时,有一个设置[从目标表中删除行](http://msdn.microsoft.com/zh-cn/library/ms189660。 ASPX)。我知道你没有使用那个向导,但是我想知道当你将包从BIDS传送到SSIS包存储时,是否会以某种方式打开它。我真的不认为会发生,但只是要检查。 – jadarnel27

回答

0

默认情况下,SSIS包或SQL代理都会删除任何东西......删除发生在包内(如果您选择“删除行”选项,通常是第一个任务),或者删除逻辑作为单独的步骤中介。

您可能想要运行分析器来查看究竟是什么被调用。或者,也许尝试删除用户的删除权限,看看包是否失败。

不幸的是,所提供的信息还不够。

+0

也许你正在使用两个不同的dtsx文件? –

+1

也许包设置为忽略错误?这就是为什么它没有抛出错误就完成了? –