Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 SQL Server代理未使用密码、xml配置或表配置执行SSIS包_Sql Server 2008_Ssis_Sql Server Agent - Fatal编程技术网

Sql server 2008 SQL Server代理未使用密码、xml配置或表配置执行SSIS包

Sql server 2008 SQL Server代理未使用密码、xml配置或表配置执行SSIS包,sql-server-2008,ssis,sql-server-agent,Sql Server 2008,Ssis,Sql Server Agent,我有一个SSIS包,它从MySQL数据库获取数据并将其放入SQL Server表中。MySQL的连接是ADO.net。该包在投标中运行良好 我想在SQLServer2008上部署作为作业运行的包。MySQL连接要求敏感数据存储在包中或保存在某些外部配置源中。如果它存储在包中,则将使用特定于我的windows用户配置文件的密钥进行加密,或者必须通过密码进行保护 我尝试了三种设置SQL Server代理作业以执行此打包的方法,但都失败了: 使用密码 我将包的ProtectionLevel设置为Enc

我有一个SSIS包,它从MySQL数据库获取数据并将其放入SQL Server表中。MySQL的连接是ADO.net。该包在投标中运行良好

我想在SQLServer2008上部署作为作业运行的包。MySQL连接要求敏感数据存储在包中或保存在某些外部配置源中。如果它存储在包中,则将使用特定于我的windows用户配置文件的密钥进行加密,或者必须通过密码进行保护

我尝试了三种设置SQL Server代理作业以执行此打包的方法,但都失败了:

使用密码

我将包的ProtectionLevel设置为EncryptSensitiveWithPassword,并为包提供密码。然后我将包的副本保存到msdb。然后,我可以连接到SSIS并运行包,此时系统会提示我输入密码

当我尝试在SQL Server中将此计划作为作业时,系统会提示我通过单击作业步骤属性的“配置”选项卡输入密码,我可以看到/DECRYPT开关已添加到命令行选项卡。运行方式属性设置为SQL Server代理服务帐户,该帐户映射到具有sysadmin服务器角色的数据库登录名。当我尝试启动此作业时,出现以下错误:

Executed as user: DOMAIN\UserROLE. Microsoft (R) SQL Server Execute Package Utility  Version 10.0.5500.0 for 64-bit  Copyright (C) Microsoft Corp 1984-2005. All rights reserved.    Started:  12:31:30  Error: 2012-07-03 12:31:31.20     Code: 0xC00291EC     Source: Get Data Execute SQL Task     Description: Failed to acquire connection "DATA_SOURCE". Connection may not be configured correctly or you may not have the right permissions on this connection.  End Error  DTExec: The package execution returned DTSER_FAILURE
似乎使用此方法时,包密码本身不会存储在作业访问它的任何位置

使用XML配置文件

然后,我创建了一个包的副本,并将ProtectionLevel设置为DontSaveSensitive,并设置了一个包配置以将MySQL凭据存储在XML文件中。然后将其保存到msdb,然后从运行包时 IntegrationServices我可以提供配置文件的路径,一切都很好。但是,当我再次为包设置作业时,我指向服务器上的配置文件,但作业失败,并出现相同的错误。我想知道这是否是因为SQL Server代理没有关联的windows帐户,该帐户允许它从文件系统中存储的XML文件中读取

使用SQL Server表配置

这次我创建了一个包的副本,并将ProtectionLevel设置为ServerStorage。然后,我在目标SQL Server数据库中创建了一个[SSIS配置]表。我修改了这个表中的条目,以包含MySQL数据源的密码。同样,包从Integration Services成功运行,但失败,错误与以前从作业运行时相同。我已检查SQL Server代理是否能够从[SSIS配置]表中读取ok-我设置了一个独立作业来测试这一点

有人对我在这里还应该做什么有什么建议吗


我正在考虑为此放弃SQL Server代理工作,重新让windows调度器简单地调度包,但在放弃之前,我想先在这里尝试一下。

我使用的是通过设置
EncryptSensitiveWithPassword
加密密码的方法,正如您上面所述,而不是看看你做错了什么。在使用integration services导入包时,请记住使用选项
保持原始包的保护级别
,但看起来您也在这样做


请尝试将角色
SQLAgentOperatorRole
设置为您的SQL Server代理服务帐户,您没有提到这一点,我不确定您是否提到了。这可能会解决您的权限问题。(我喜欢通过评论来回答这个问题,但我在这里也没有权限:)

谢谢stb。我尝试了您关于SQLAgentOperatorRole的建议,但似乎没有达到预期效果。我已经在导入我的软件包,并保持原始软件包的保护级别。我发现了一个有关您问题的“一般故障排除”视频。也许这会有帮助:再次感谢@stb,我确实看过这段视频,但它忽略了我需要看到的关键部分的细节!我给了她一些反馈。我想我会放弃这一点,只是用Windows调度程序来安排我的包。无论如何,感谢你的时间。