【发布时间】:2019-06-19 16:06:14
【问题描述】:
我正在运行一个 SSIS 包,其中包含一个用于检查文件是否存在的脚本。
当我在我的 Windows 凭据下在 Visual Studio 中运行它时,它工作正常并且可以在目录中找到该文件并具有访问权限。
当我将包部署到 SQL Server 上并运行它(仍然在我的 Windows 凭据下,我什至将它们打印在脚本中的日志消息中)时,它无权访问该目录。
注意:我不是在代理作业中运行它,而是直接在 SQL Server Management Studio 的集成服务包下运行它。
编辑:数据库保存在远程服务器上,当我登录该服务器并在那里使用管理工作室时,它一切正常。如果我在我的机器上以我的身份连接到远程服务器,但它不会
有人知道为什么吗?
【问题讨论】:
-
它是一台远程机器,我已经在包中放置了消息但是说它正在以我的身份运行,Environment.UserName 以我的身份出现,无论我是否在远程机器上运行它(Sql server management studio ) 或在我的 Visual Studio 机器上
-
您使用什么任务来检查文件是否存在(脚本任务或 bat 文件)?您如何检查文件是否存在?
-
这听起来像是 kerberos 双跳问题。请发布访问文件的确切错误。
-
仅使用 C# 脚本,我首先使用 File.Exists 检查它是否存在,如果不存在,我检查目录的权限。在我的机器上在 VS 上运行良好,但在 SQL 管理工作室中出现异常
-
我认为您需要检查哪个帐户在服务中运行 SQL Server 代理,并使用该帐户授予对该帐户的文件夹访问权限,根据我的经验,我更喜欢使用个人帐户来运行 SQL Server代理,。
标签: sql-server ssis etl