允许 SQL 服务器代理具有 Excel 权限

本文关键字:Excel 权限 代理 SQL 服务器 允许 | 更新日期: 2023-09-27 18:31:59

>我有一个SSIS包部署到SQL 2012。如果我右键单击并执行,则可以运行包,但如果通过 SQL Server 代理作业运行包,则不能运行包。SSIS 包利用 Excel 互操作对文件进行一些更改,然后保存它。我的猜测是不允许SQL代理帐户执行此类操作(打开excel应用程序)。我已经为管理员创建了一个代理,并选择要作为该代理运行的包。这也行不通。有人知道如何实现我想要的吗?蒂亚

允许 SQL 服务器代理具有 Excel 权限

试试这个:

创建以下文件夹:

C:'Windows'SysWOW64'config'systemprofile'Desktop
C:'Windows'System32'config'systemprofile'Desktop

解释:

Microsoft不建议通过脚本自动化Excel或其他Office应用程序,因为Office应用程序旨在供人使用,而不是由机器使用。

因此,Excel 期望在应用程序运行时存在用户配置文件。SQL Server 代理服务不使用现有用户配置文件(即使在代理用户下启动时也是如此)。当 Excel 通过代理自动启动时,Excel 将查找该用户配置文件信息和桌面文件夹。

代理使用 systemprofile 文件夹作为其"用户"目录。

由于某种原因,如果系统配置文件文件夹中不存在桌面文件夹,则自动 Excel 过程将失败。因此,为 32 位和 64 位系统配置文件创建桌面文件夹将解决您的问题。

使用使用 Excel 互操作的脚本任务的 SSIS 包时遇到了这个问题;该包将在 BIDS 中执行(因为这是在我的用户帐户下执行的),但是当同一个包作为 SQL 代理作业步骤运行时,它会抛出错误(由于在 SQL 代理帐户或"本地系统"下执行)。

我收到的此问题错误是:

System.UnauthorizedAccessException: Retrieving the COM class factory for component 
with CLSID {00024500-0000-0000-C000-000000000046} 
failed due to the following error: 80070005.

为了解决此问题,我为已知用户帐户创建了一个凭据(SSMS>安全>凭据)(最好创建具有最低权限的用户帐户用于生产目的)。

然后,我创建了一个代理(SSMS> SQL Server 代理>代理> SSIS 包执行),该代理映射到上面创建的凭据,确保在"活动到以下子系统"列表下选择"SQL Server Integration Services 包"。

最后,打开代理作业的属性,选择"步骤",编辑执行有问题的 SSIS 包的步骤,然后选择我刚刚在"运行方式:"下创建的代理。

jour SSIs软件包是否使用共享文件夹或其他东西?有时SQL代理在无权访问网络(本地系统)的帐户下运行,因此这可能是问题。

如果将

代理设置为在您的帐户下运行是有问题,那么可以进行作弊,因此如果它有效,您可以创建新帐户并赋予其最小权限...