我想使用通过以下powershell命令创建的Managed ADServiceAccount作为代理帐户来计划和执行sis软件包:
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
最后,我想提一提我正在重现一个问题,所以我不想要替代解决方案。我只想使用一个活动目录托管服务帐户来执行作业步骤和sis软件包。
我认为我在这里确实误解了一点,也没有关于它的文档,这很奇怪,因为我将其视为使用托管AD服务帐户作为ssis作业的“运行方式”的非常有效的用例。
答案 0 :(得分:0)
如果不需要密码,那么任何人都可以在具有更高特权的帐户的上下文中实现代码的执行。
为了允许SQL Server代理在代理帐户的上下文中执行代码,它必须知道密码才能启动该帐户的安全会话。如果不需要密码,那将是可怕的。您会看到托管帐户在这种情况下没有用。
但是为什么不以这样的托管服务帐户运行SQL Server代理?