我有一个SSIS包计划在每个工作日的早上8:15运行。它将数据复制到Active Directory和SQL中以及从中复制数据。大约两周前,它开始失败,没有对服务器进行任何更改(超出MS更新)。
有趣的是,如果我再次立即运行包,它就会成功。以下是失败时的错误文本:
Date 7/14/2011 8:15:00 AM
Log Job History (Reference: Active Directory)
Step ID 1
Server MMCI-GD1SQL2
Job Name Reference: Active Directory
Step Name Run Package
Duration 00:00:32
Sql Severity 0
Sql Message ID 0
Operator Emailed
Operator Net sent
Operator Paged
Retries Attempted 0
Message
Executed as user: MMCI\service-sql. Microsoft (R) SQL Server Execute Package Utility Version 10.0.1600.22 for 32-bit Copyright (C) Microsoft Corp 1984-2005. All rights reserved.
Started: 8:15:00 AM Error: 2011-07-14 08:15:31.88
Code: 0xC0047062
Source: Synchronize Permissions Active Directory Permissions [133]
Description: System.DirectoryServices.AccountManagement.PrincipalOperationException: There is no such object on the server. ---> System.DirectoryServices.DirectoryServicesCOMException (0x80072030): There is no such object on the server.
at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
at System.DirectoryServices.DirectoryEntry.Bind()
at System.DirectoryServices.DirectoryEntry.RefreshCache()
at System.DirectoryServices.AccountManagement.ADStoreCtx.LoadDirectoryEntryAttributes(DirectoryEntry de)
--- End of inner exception stack trace ---
at Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.HandleUserException(Exception e)
at Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.PrimeOutput(Int32 outputs, Int32[] outputIDs, PipelineBuffer[] buffers)
at Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostPrimeOutput(IDTSManagedComponentWrapper100 wrapper, Int32 outputs, Int32[] outputIDs, IDTSBuffer100[] buffers, IntPtr ppBufferWirePacket) End Error Error: 2011-07-14 08:15:31.90
Code: 0xC0047038
Source: Synchronize Permissions SSIS.Pipeline
Description: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED. The PrimeOutput method on component "Active Directory Permissions" (133) returned error code 0x80131501. The component returned a failure code when the pipeline engine called PrimeOutput(). The meaning of the failure code is defined by the component, but the error is fatal and the pipeline stopped executing. There may be error messages posted before this with more information about the failure. End Error DTExec: The package execution returned DTSER_FAILURE (1). Started: 8:15:00 AM Finished: 8:15:31 AM Elapsed: 31.343 seconds. The package execution failed. The step failed.
有什么想法吗?
答案 0 :(得分:0)
是否已应用一些新的组策略更改了自动运行使用的帐户的权限,但这不适用于您的用户ID?我假设当你说“我然后......运行包”时,你的意思是你登录的用户ID。
答案 1 :(得分:0)
根据您提供的错误消息,问题似乎是您的程序包中的任务正在尝试查询Active Directory中可能不再存在的对象。
System.DirectoryServices.AccountManagement.PrincipalOperationException:
There is no such object on the server. --->
System.DirectoryServices.DirectoryServicesCOMException (0x80072030):
There is no such object on the server.
我可能在下面的部分错了。我只是根据提供的描述推测你的包可能在做什么。
由于您的程序包在SQL Server和Active Directory之间同步数据,我假设名为 Synchronize Permissions Active Directory Permissions
的任务选择存储在SQL Server中的某种形式的数据并更新{{1}中的内容}} 或相反亦然。如果我的假设是正确的,那么此任务可能是Active Directory
或Script Task
。我相信此组件中的代码无法在Active Directory中选择对象(组/用户)。
我会检查在程序包无法运行之前的几天内是否在Active Directory中删除了一个组/用户。
希望这有帮助。