Integration Services Catalog用于执行包的用户凭据是什么?

Joh*_*Law 33 sql-server ssis sql-server-2012

我们有一个SSIS包,它从共享的网络目录中读取文本文件.当我在SSDT中执行此包时,它工作正常.然而,当我们将项目部署到Integration Services Catalog并尝试从那里运行相同的包时,我得到一个错误,表明拒绝访问该目录.

我一直认为,当我登录数据库并从Integration Services目录执行SSIS包时,它使用我的用户凭据,因此可以访问相关目录,因为我的用户配置文件可以访问它.

这不是这种情况吗?SQL Server是否使用其他用户来执行IS目录中的包?有选择run as another user吗?任何输入将不胜感激.

小智 40

包裹执行:

SQL Server数据工具:

SQL Server Data Tools (SSDT)正在运行的用户凭证将用于执行在SSDT内执行的包.

在Windows Start\All Programs\Microsoft SQL Server 2012下,如果单击SQL Server数据工具,它将在您的凭据下运行.要在不同的用户帐户下运行,您可以按Ctrl+ Shift选择Run as different user选项.

从SSDT执行包

集成目录服务:

右键单击下面的包Integration Services Catalog \ SSISDB \ <Folder name> \ Projects \ <Project name> \ Packages \ <Package name>并选择Execute...运行包.该程序包将在用于连接到SQL Server Management Studio的凭据下运行.

请注意,如果您尝试使用SQL Server身份验证运行包,您将收到以下错误消息:

使用SQL Server身份验证的帐户无法启动该操作.使用Windows身份验证的帐户启动操作.

执行

按下后Execute...,SQL Server旋转一个进程ISServerExec.exe,启动Console Window Host进程:

在SSIS目录执行罩下

ISServerExec.exe是一个在SSIS目录中执行包的程序.在这种情况下,它是在从SQL Server Management Studio执行SSIS包的同一用户下启动的.

没有代理的SQL Server代理作业:

SQL Server代理作业中运行SSIS包时,默认情况下作业步骤在下运行SQL Server Agent Service Account.通过导航到Windows Start \ Administrative Tools \ Services,查找服务SQL Server代理(Your Instance Name)并找到下面列出的用户帐户,可以找到与SQL Server代理服务相关联的用户帐户Log On As

使用代理的SQL Server代理作业:

您还可以通过创建代理帐户在不同凭据下运行SQL Server代理作业.在代理帐户下执行作业步骤时,作业步骤中的包将在代理帐户上指定的凭据下执行.

SO回答下面提供了创建代理帐户以运行SQL Server代理作业的分步说明.

如何在我的SQL Server代理作业中创建一个将运行我的SSIS包的步骤?

如何验证:

样本SSIS 2012包:

以下是我针对用于包执行的用户帐户验证上述语句所做的工作.

  • 打开SQL Server数据工具并创建名为SSIS 2012的软件包SO_15289442.dtsx.

  • 创建一个名为ExecutionUserdata type 的变量String.将表达式分配@[System::UserName]给变量.UserName是一个系统变量,它提供执行包的用户的信息.

  • 将" 发送邮件任务"拖放到" 数据流"选项卡上.

  • 创建SMTP连接并将其分配给SmtpConnection"发送邮件任务编辑器 - 邮件"页面.

  • 指定FromTo电子邮件地址.

  • MessageSourceType更改为Variable.

  • 设置MessageSourceUser::ExecutionUser.

  • 右键单击该包,然后选择"部署"以将项目部署到您选择的服务器上可用的Integration Services目录.

包执行

  • 在SSDT中运行包.

  • 使用"以不同用户身份运行"选项打开SSDT.提供除您之外的其他凭据并再次运行该包.

  • 从Integration Services目录运行包.

  • 创建SQL Server代理作业以使用SQL Server代理服务帐户运行该程序包.

  • 创建SQL Server代理作业以使用代理帐户运行包.

对于上面提到的每个执行,您将收到一封电子邮件,其中包含用于执行包的用户帐户.

你的问题:

在您的情况下,如果右键单击并选择"从Integration Services目录执行",则程序包将在您的帐户下执行(假设您使用凭据访问SSISDB).确保该文件夹可以访问网络路径.

如果从SQL Server代理作业中运行包,则代理帐户是run as another user您正在查看的选项.