【发布时间】: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