gpt4 book ai didi

sql-server - Integration Services目录使用哪些用户凭据执行程序包?

转载 作者:行者123 更新时间:2023-12-01 19:04:09 26 4
gpt4 key购买 nike

我们有一个SSIS包,可以从共享的网络目录中读取文本文件。当我在SSDT中执行此程序包时,它工作正常。但是,当我们将项目部署到Integration Services Catalog并尝试从那里运行相同的程序包时,我收到一条错误消息,指示对目录的访问被拒绝。

我一直给人的印象是,当我登录数据库并从Integration Services Catalog执行SSIS程序包时,该程序包使用我的用户凭据,因此可以访问该目录,因为我的用户配置文件可以访问该目录。

不是这样吗? SQL Server是否使用其他用户来执行IS目录中的程序包? run as another user是否有选项?任何输入将不胜感激。

最佳答案

包执行:
SQL Server数据工具:
使用SQL Server Data Tools (SSDT)的用户凭据将用于执行在SSDT中执行的程序包。
在Windows开始\所有程序\ Microsoft SQL Server 2012下,如果单击SQL Server数据工具,它将在您的凭据下运行。要在其他用户帐户下运行,可以按Ctrl + Shift选择 Run as different user 选项。

集成目录服务:
右键单击Integration Services Catalog \ SSISDB \ <Folder name> \ Projects \ <Project name> \ Packages \ <Package name>下的软件包并选择Execute...来运行软件包时。该程序包将在用于连接到SQL Server Management Studio的凭据下运行。
请注意,如果尝试使用SQL Server身份验证运行程序包,则会收到以下错误消息:

The operation cannot be started by an account that uses SQL Server Authentication. Start the operation with an account that uses Windows Authentication.



按下 Execute...后, SQL Server旋转一个进程 ISServerExec.exe,这将启动一个 Console Window Host进程:
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代理服务,查找服务SQL Server代理( Your Instance Name)并找到在 Log On As下列出的用户帐户。
带代理的SQL Server代理作业:
您也可以通过创建代理帐户以不同的凭据运行SQL Server代理作业。在代理帐户下执行作业步骤时,作业步骤中的程序包将在代理帐户上指定的凭据下执行。
SO下方提供了逐步说明,以创建代理帐户来运行SQL Server代理作业。
How do I create a step in my SQL Server Agent Job which will run my SSIS package?
如何验证:
SSIS 2012样本包:
这是我为验证用于包执行的用户帐户的上述语句所做的工作。
  • 打开SQL Server数据工具并创建名为SO_15289442.dtsx的SSIS 2012程序包。
  • 创建一个名为ExecutionUser的数据类型为String的变量。将表达式@[System::UserName]分配给变量。 UserName是一个系统变量,提供执行包的用户的信息。
  • 将“发送邮件任务”拖放到“数据流”选项卡上。
  • 创建SMTP连接,并将其分配给“发送邮件任务编辑器-邮件”页面上的SmtpConnection
  • 指定FromTo电子邮件地址。
  • 将MessageSourceType更改为Variable
  • MessageSource设置为User::ExecutionUser
  • 右键单击该程序包,然后选择“部署”以将项目部署到您选择的服务器上可用的Integration Services Catalog中。

  • 包执行
  • 在SSDT中运行软件包。
  • 使用“以其他用户身份运行”选项打开SSDT。提供与您不同的凭据,然后再次运行该程序包。
  • 从Integration Services目录中运行程序包。
  • 创建一个SQL Server代理作业,以使用SQL Server代理服务帐户运行程序包。
  • 创建一个SQL Server代理作业以使用代理帐户运行包。

  • 对于上述每次执行,您都会收到一封电子邮件,其中包含用于执行软件包的用户帐户。
    您的问题:
    对于您而言,如果右键单击并从Integration Services Catalog中选择“执行”,则该程序包将在您的帐户下执行(假设您正在使用凭据访问SSISDB)。确保该帐户可以访问网络路径。
    如果您是从SQL Server代理作业中运行程序包,则代理帐户是您正在查看的 run as another user选项。

    关于sql-server - Integration Services目录使用哪些用户凭据执行程序包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15289442/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com