【问题标题】:SSIS\C# file access - manual access is possible, but from code errers are thrownSSIS\C# 文件访问 - 可以手动访问,但会抛出代码错误
【发布时间】:2013-12-05 11:15:46
【问题描述】:

当我尝试在共享(远程)文件夹上创建文件时遇到以下问题:

当我试图在共享文件夹上创建、修改或删除文件时,它工作得很好,但是当我试图从 SQL Server JOB 中做同样的事情时,它就惨遭失败了。

作业被配置为触发试图将报告文件写入共享资源的 SSIS 包。作业所有者设置为我检查以具有适当访问权限的同一帐户。此外,没有为 SSIS 步骤设置代理帐户。作业所有者也是系统管理员。

据我所知,此用户对资源的访问权限是由 Active Directory 组中的成员授予的。

我从 SSIS 包中收到以下错误: 平面文件目标:

The file name property is not valid. The file name is a device or contains invalid characters.

脚本任务(我做了它来检查是否可以从 C# 代码创建文件):

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.UnauthorizedAccessException: Access to the path '\\[Some_Directory]\[File_Name]_YYYY-MM-DD-HH-mm-ss.txt' is denied.

我不得不说我很茫然...看起来确实是访问冲突问题,但是手动访问和修改资源就可以了。

你有什么建议吗?

【问题讨论】:

  • SSIS 以什么帐户运行?该帐户是否有权写入文件?或者也许它的 sql server 代理正在运行没有访问权限的包。我不记得到底是哪一个负责这项工作。
  • SSIS 包由作业所有者(在此 SQL Server 实例上也具有系统管理员角色)运行。我已确认此用户可以读取和写入目标(我的同事冒充此用户并在共享文件夹中手动创建了新文件)。
  • 包通过 SQL 代理运行,因访问冲突而失败。同事冒充帐户并运行包?通过命令行?它有效吗?
  • 同事使用运行 SQL 代理的帐户登录到系统。然后他尝试(并成功)在共享上创建/删除/修改文件。

标签: c# sql-server windows ssis active-directory


【解决方案1】:

我无法找到上述问题的根本原因,但我设法找到了有效且简单的解决方法。 JOB 重新配置如下:

  • JOB 所有者已更改为非 sysadmin 帐户(无论如何,该域帐户代理服务正在运行,应该有权访问资源)。
  • SSIS 包步骤将其代理设置为另一个非管理帐户,该帐户被授予对资源的完全访问权限

正如我在上面所写的那样,我的访问权限无法找到导致此问题的原因。我有 95% 的可能性怀疑 Active Directory 配置或其他与配置相关的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2012-01-22
    相关资源
    最近更新 更多