【问题标题】:ADServiceAccount as Proxy Account for SQL Server Agent To schedule SSIS packages from SSISDBADServiceAccount 作为 SQL Server 代理的代理帐户 从 SSISDB 计划 SSIS 包
【发布时间】:2018-07-27 20:58:52
【问题描述】:

我想使用使用以下 powershell 命令创建的托管 ADServiceAccount 作为代理帐户来安排和执行 ssis 包:

New-ADServiceAccount -Name seraccname -Enable $true -DNSHostName domainname.local
Set-ADServiceAccount -Identity seraccname -PrincipalsAllowedToRetrieveManagedPassword  serv1.domainname.local
Install-ADServiceAccount seraccname 

但是当我将该帐户用作 SQL Server 中的凭据时。 SSMS 需要密码并给我这个错误。

"The secret stored in the password field is blank".

但是,这些类型的帐户没有密码,因为它们由 AD 管理。 然后我认为我很聪明,我使用以下 sql 代码强制创建没有密码的凭据

USE [master] 
GO
CREATE CREDENTIAL [seracccred] WITH IDENTITY = 'domainname.local\seraccname$'
GO

然后我使用该凭据创建了一个代理,在作业步骤中使用它(运行方式)但是当我执行作业步骤时,我收到以下错误。

Error authenticating proxy domainname.local\seraccname$, system error, username or password is incorrect

我为服务帐户提供了使用 SSISDB 所需的权限。但我认为那不是问题。我不知道为什么 SQL Server Agent 或 SQL Server 或任何需要密码的东西。我正在使用 SQL Server 2012

最后,我想提一下,我正在重现一个问题,所以我不想要替代解决方案。我只想使用活动目录托管服务帐户来执行作业步骤和 ssis 包。

我认为我在这里确实误解了一些东西,并且根本没有关于此的文档,这很奇怪,因为我认为使用托管 AD 服务帐户用作 ssis 作业的“运行方式”是一个非常有效的用例

【问题讨论】:

    标签: sql-server ssis active-directory service-accounts sql-server-agent


    【解决方案1】:

    如果不需要密码,那么任何人都可以在具有更高权限的帐户的上下文中执行代码。

    为了允许 SQL Server 代理在代理帐户的上下文中执行代码,它必须知道密码才能为该帐户启动安全会话。如果不需要密码,那将是可怕的。您会发现托管帐户在这种情况下没有用处。

    但是为什么不在这样的托管服务帐户下运行 SQL Server 代理呢?

    【讨论】:

    • 感谢您的评论,但 Set-ADServiceAccount 中的 PrincipalsAllowedToRetrieveManagedPassword 选项不应该定义哪些机器或域组能够在没有密码的情况下使用该帐户,因为它由 AD 管理
    • 代理帐户凭据不用于启动服务,但您正在尝试使用专为服务设计的帐户类型。
    猜你喜欢
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多