从运行在本地服务帐户上的SQL Server运行域用户拥有的SSIS包


10

我想运行一个包含传输SQL Server对象任务的SSIS包。涉及的服务器在同一域中,但是SQL Server服务在本地服务帐户上运行。因此环境如下所示:

服务器1

  • 在本地帐户上运行的SQL Server
  • 在文件系统上:SSIS包
  • 在SQL Server代理中:作业

服务器2

  • 在本地帐户上运行的SQL Server

为了能够登录到两台服务器,我创建了一个域帐户用作服务帐户。当我使用该域帐户登录到Server 1,然后从文件系统执行该程序包时,每个步骤都会成功。但是,当我尝试将作业添加到SQL Server时,遇到以下问题之一:

情况1.职位所有者:本地帐户;运行SSIS步骤作为域帐户的代理。当我将作业所有者设置为本地帐户,但将作业作为域帐户的代理运行时,作业本身将成功执行,但是程序包会抛出如下错误

执行失败,出现以下错误:“目录'LocalApplicationData'不存在。”。

可以通过在服务器1上为域用户创建具有管理员权限的登录名来解决此错误,但这显然不是理想的解决方案。将帐户添加到SQL Server代理/ DTS组之一也不起作用。

情况2.作业所有者:域帐户;运行SSIS步骤作为域帐户的代理。当我同时为该域帐户设置作业所有者和“以用户身份运行”时,该作业将完全无法启动,并出现以下错误:

无法确定作业的所有者(域\域用户)Job name是否具有服务器访问权限(原因:无法获取有关Windows NT组/用户“域\域用户”的信息,错误代码0x5。[SQLSTATE 42000](错误15404)) 。

我相信最后一个错误是因为SQL Server在本地帐户上运行,并且therfor无法查看哪些权限域帐户具有该权限。

什么是使作业正常运行的正确方法?情况2对我来说比较干净,但是似乎不可能,因为SQL Server在本地帐户上运行。情况1也可以,但是不会在我的SQL Server上授予域用户管理权限。


更新:

@JonSeigel和@Brownstone先生:

这似乎是问题的原因是由于缺少权限。但是,该错误是关于不存在的“ LocalApplicationData”-为每个帐户生成的文件夹之一。我已经使用运行包的凭据登录了服务器(从而创建了配置文件目录),并尝试了配置文件目录的几种权限组合。即使手动授予该特定目录上的几乎所有权限,我也会遇到上述错误。

在进行更多研究时,我遇到了一个论坛线程,网址http://www.sqlservercentral.com/Forums/Topic391332-148-1.aspx#bm391441,这非常相似-尽管也没有解决方案。


您为什么不使用域帐户提供SQL服务?
Eric Higgins'4

是的,但是我不知道是什么原因(我猜想DTAP周期和域并非无处不在)。无论如何,这是给定的环境,我不允许更改。
vstrien'4

情况#1似乎是答案。我认为您收到的错误消息来自包装内。换句话说,程序包正在执行,但是其中的任务需要比授予服务帐户更多的权限。您可能不必授予该帐户管理员级别的权限才能使其成功(改为授予精细权限,或者将过程更改为不需要该权限)。
乔恩·塞格尔

是否可以将SQL登录名(SQL身份验证)添加到远程SQL Server(服务器2)?如果您有该选项,则可以在用于目标的SSIS连接中使用SQL登录名。这意味着您将必须使用密码来加密程序包,但这将解决您的问题。
Roi Gavish 2012年

@Justicator:也许是不得已。但是,只要有可能进行域登录,我就不要使用SQL身份验证。
vstrien 2012年

Answers:


5

我个人认为,选择方法1是可行的方法。但是我认为您无需授予域帐户本地管理员访问权限。在我看来,它需要访问某些文件夹和文件,因此您可以授予域用户仅访问成功运行程序包所需的资源的权限。这可以通过“文件/文件夹属性”对话框并选择“安全性”选项卡来完成-无需为每个文件和文件夹都进行设置,因为您可以设置父目录的权限并将其设置为覆盖子属性。

我希望这可以帮助你。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.