SSIS包失败,15分钟后成功运行

发布于 2024-11-20 00:11:53 字数 2642 浏览 1 评论 0原文

我有一个 SSIS 包,计划在每个工作日早上 8:15 运行。它将数据复制到 Active Directory 和 SQL 以及从 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.

有什么想法吗?

I have an SSIS package that is scheduled to run every weekday morning at 8:15. It copies data to and from Active Directory and SQL. About two weeks ago, it started failing, with no changes having been made to the server (beyond MS updates).

The funny thing is that if I then immediately run the package again, it succeeds. Here is the error text from when it fails:

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.

Any thoughts?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

窗影残 2024-11-27 00:11:53

是否应用了一些新的组策略来更改自动运行所使用的帐户的权限,但该策略不适用于您的用户 ID?我假设当您说“我然后...运行该包”时,您的意思是您的登录用户 ID。

Has some new Group Policy been applied that changed the permissions for the account your automated run uses, but which doesn't apply to your user id? I'm assuming when you say "I then ... run the package", you mean your logged-in user id.

寄居人 2024-11-27 00:11:53

根据您提供的错误消息,问题似乎是包中的任务正在尝试查询 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 中的某种形式的数据并更新内容在 Active Directory 中,反之亦然。如果我的假设是正确的,这个任务可能是Script TaskScript Component。我认为该组件内的代码无法在 Active Directory 中选择对象(组/用户)。

我会检查在程序包运行失败的前几天是否在 Active Directory 中删除了组/用户。

希望这有帮助。

Based on the error message that you had provided, the issue seems to be that the task within your package is trying to query an object in Active Directory that might no longer exist.

System.DirectoryServices.AccountManagement.PrincipalOperationException: 
There is no such object on the server.   ---> 
System.DirectoryServices.DirectoryServicesCOMException (0x80072030): 
There is no such object on the server.

I could be wrong on the below part. I am just speculating what your package might be doing based on the description provided.

Since your package synchronizes data between SQL Server and Active Directory, I assume that the task named Synchronize Permissions Active Directory Permissions selects some form of data stored in SQL Server and updates the content in Active Directory or vice versa. If my assumption is correct, this task is probably Script Task or Script Component. I believe that the code inside this component is failing to select an object (group/user) in Active Directory.

I would check whether a group/user was deleted in Active Directory on the days prior to when the package failed to run.

Hope this helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文