通过SQL Server代理作业执行SSIS包时出错

时间:2012-01-03 18:34:36

标签: sql-server database-schema

我需要找到一种方法来创建表模式的备份。我一直在尝试使用Transfer SQL Server对象,但是我没有看到如何在包中使用这种类型的控制流项时指定特定的源和目标表来复制架构。一旦我能想到这一点,我将安排它自动运行。我将不胜感激任何帮助。谢谢!

更新
谢谢,所有。我有以下问题 - 从Visual Studio执行时,我有Transfer SQL Server对象控件流项,它正在将表结构从一个服务器/数据库复制到另一个服务器。我已将其创建为SSIS包并将其导入原始服务器(复制了表结构的服务器),但是,在尝试运行包作业时,我不断收到错误消息“无法连接到服务器.. 。任务验证过程中出现错误...包执行返回DTSER_FAILURE(1)...步骤失败。“有没有人知道为什么它可以在Visual Studio中正常运行,但不是作为一份工作?

1 个答案:

答案 0 :(得分:1)

有点晚了,但也许这个答案会帮助别人。 (至少)有两件事可能导致您在BIDS中执行包与通过作业运行包的SQL Server之间的执行差异。

1)BIDS包项目中的package protection level
程序包的 ProtectionLevel 属性设置为以下值之一:

  • DontSaveSensitive
  • EncryptSensitiveWithUserKey
  • EncryptSensitiveWithPassword
  • EncryptAllWithPassword
  • EncryptAllWithUserKey
  • ServerStorage

默认值是出于某种疯狂的原因 EncryptSensitiveWithUserKey 。这意味着包中的敏感信息将根据创建包的用户的凭据进行加密。这也意味着如果另一个用户(没有创建并保存包的人)打开或运行包,则会出现错误 - 也就是说,如果包中有任何敏感信息。

因此,您希望将此默认值更改为更明智的值,例如 DontSaveSensitive (我们的标准值)或 EncryptSensitiveWithPassword

2)SQL Server代理作业中的执行帐户
“作业步骤”窗口中运行为字段的标准值是 SQL Server代理服务帐户。安装SQL Server时,此帐户为configured,权限取决于所选的帐户。

SQL Server Job Step

因此,该帐户可能无权执行您的包中定义的操作。例如,连接到另一个数据库服务器。

您可以通过设置代理来选择其他帐户来运行该程序包。有关这方面的更多信息可以在StackOverflow的其他地方找到,例如,请参阅here