使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

Microsoft 在一个可下载文件中分发 Microsoft SQL Server 2012 修复程序。 由于修补程序是累积的,因此每个新版本都包含以前的 SQL Server 2012 更新版本附带的所有修补程序和所有安全更新。

症状

假设你在 Microsoft SQL Server 2012 中的多个会话上同时运行多个 xp_cmdshell 存储过程。 在这种情况下, xp_cmdshell 存储过程的第一次执行在最后一次执行完成之前不会完成。

原因

出现此问题的原因是,当你同时运行 xp_cmdshell 存储过程时打开的进程会继承句柄。 CreateProcess API 需要处理继承以重定向标准输出和错误消息。 如果同时运行多个 xp_cmdshell 存储过程,则新打开的进程可以继承现有进程的句柄。 但是, xp_cmdshell 存储过程将等待句柄由所有打开的进程关闭。 因此,当多个进程继承该句柄时,所有 xp_cmdshell 执行都必须等待,直到该句柄被最长运行的进程关闭。

解决方案

若要解决此问题,请应用以下累积更新。 此更新添加了用于阻止跨进程的句柄继承的 CreateProcess API STARTUPINFOEX 选项。

累积更新信息

SQL Server 2012 Service Pack 1 的累积更新包1

此问题的修补程序首次在累积更新1中发布。有关如何获取此累积更新包的 SQL Server 2012 Service Pack 1 的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2765331 SQL Server 2012 Service Pack 1 的累积更新包1注意 由于这些版本是累积的,因此每个新的修复版本都包含以前的 SQL Server 2012 修复版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2772858 在发布 SQL Server 2012 Service Pack 1 之后发布的 SQL Server 2012 版本

SQL Server 2012

此问题的修补程序首次在累积更新4中发布。有关如何为 SQL Server 2012 获取此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2758687 SQL Server 2012 累积更新程序包4注意 由于这些版本是累积的,因此每个新的修复版本都包含以前的 SQL Server 2012 修复版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2692828 在 SQL Server 2012 发布后发布的 SQL Server 2012 版本

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

参考

有关 CreateProcess 函数的详细信息,请转到以下 MSDN 网站:

有关 CreateProcess 函数的常规信息有关 xp_cmdshell 存储过程的详细信息,请转到以下 MSDN 网站:

有关 xp_cmdshell 存储过程的常规信息 有关类似问题的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

315939 PRB:在 CreateProcess 调用期间,子元素继承了不应的句柄

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×