在前一天晚上出现一些数据库问题之后,多个服务器(独立于数据库服务器)在从 powershell 控制台运行“Get-ODBCDSN”函数时出现以下错误:
Get-OdbcDsn:等待另一个并发操作完成时超时。第 1 行,字符:1 + Get-OdbcDsn + ~~~~~~~~~~~ + CategoryInfo:ResourceBusy:(MSFT_OdbcDsnTask:Root/Microsoft/...SFT_OdbcDsnTask) [Get-OdbcDsn],CimExc eption + FullyQualifiedErrorId:MI RESULT 27,Get-OdbcDsn
我在网上没有找到有关此错误的任何信息。我尝试调整与“-ThrottleLimit”相关的一个开关,但使用各种值都无济于事。
我相信,重新启动将解决此错误。但是,此功能会影响客户,需要“正常工作”。我使用该模块获取所有当前用户 DSN,然后删除它们。然后我使用 New-ODBCDSN 函数重建。所有这些函数都在登录脚本中调用。在高峰时段,大约 20 到 50 个用户可能会同时登录服务器。Get 和 New-ODBCDSN 命令都显示相同的错误。
为了暂时解决这个问题,我已停止使用该功能,并转而通过注册表 HKCU:\Software\ODBC.INI\ODBC\etc,etc. 设置 DSN。这不是我喜欢的选项。
我希望了解问题、找到解决方案或找到其他解决方法。
答案1
我知道我晚了一年,但希望这能帮助其他人。我刚刚收到同样的错误“Get-OdbcDsn:等待另一个并发操作完成时超时。在第 1 行”,这是因为 MSFT_OdbcDsnTask 正在尝试通过 PowerShell 添加 dsn 并被锁定,并且终止命令没有任何作用。您可能注意到您仍然可以使用“get-obdcdriver”,至少我注意到了。
我可以通过转到开始 > 资源监视器 > CPU > 关联句柄并在搜索中输入 ODBC 来修复此问题。然后我能够在搜索结果。在杀死其中一个 wmiprvse.exe 后,我的列表就空白了,我就可以运行命令了。请注意,如果它们没有清除,我会确保杀死所有,否则你基本上就是在从该 exe 中抽身。此外,它试图完成的任何事情都将丢失。