DTSX包在Visual Studio中运行,但在从数据库作业调用时则不运行

时间:2014-07-30 15:04:13

标签: sql sql-server visual-studio-2012 ssis

我有一个SSIS包,它接受数据库备份,并且在Visual Studio中运行正常,但是当从数据库作业执行时,它会因以下错误而失败。我无法理解的部分是'GS \ BOS-DBMONITOR $'不是用户。 'BOS-DBMONITOR'是服务器名称。

错误:

以用户身份执行:NT Service \ SQLSERVERAGENT。 Microsoft(R)SQL Server执行包实用程序版本11.0.2100.60(适用于64位版权所有(C)Microsoft Corporation)。版权所有。开始时间:上午10:58:03错误:2014-07-30 10:58:04.33代码:0xC0024104源:备份数据库任务描述:任务上的Execute方法返回错误代码0x80131904 (用户登录失败' GS \ BOS-DBMONITOR $”)。的。 Execute方法必须成功,并使用“out”参数指示结果。结束错误DTExec:程序包执行返回DTSER_FAILURE(1)。开始时间:上午10:58:03完成时间:上午10:58:04经过:0.593秒。包执行失败。步骤失败了。

1 个答案:

答案 0 :(得分:2)

SQL Server代理是SQL Server附带的调度程序。错误的第一行Executed as user: NT Service\SQLSERVERAGENT指定您的实例作为系统用户运行 - 而不是“真实”帐户。然后,此计算机尝试联系另一台计算机并要求登录该SQL Server实例。 SQL Server说“我不允许与陌生人和GS \ BOS-DBMONITOR $'交谈,你很奇怪。”

你如何解决它?

您需要让外国机器了解将与他们交谈的帐户。

  1. 使用SQL Server配置管理器将服务帐户从本地帐户更改为域帐户MyDomain \ NonExpiringAccount
  2. 在BOS-DBMONITOR上的SQL Server实例中创建一个Credentialed用户,然后将它们指定为执行此操作的代理,以及任何类似的SSIS包。这允许将凭证用户的帐户呈现给外部主机。与更改服务帐户相比,这对现有操作的潜在影响较小,但需要更多工作
  3. 可能有一些伏都教你可以在你需要备份的所有服务器上工作,以允许这个用户登录,但我甚至不会走这条路。这将是你必须按照每个盒子进行的工作,并且可能会有一些安全隐患超出我的想法