2012-01-03 190 views
0

我需要找到一种方法来创建表的模式备份。我一直在尝试使用Transfer SQL Server对象,但是我没有看到如何在包中使用这种类型的控制流项时指定特定的源表和目标表来复制架构。一旦我可以弄清楚这一点,我会安排它自动运行。我将不胜感激任何援助。谢谢!通过SQL Server代理执行SSIS包时出错作业

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

回答

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

相关问题