Microsoft vertreibt Microsoft SQL Server 2012-Fixes in einer herunterladbaren Datei. Da die Fixes kumulativ sind, enthält jede neue Version alle Hotfixes und alle Sicherheitsupdates, die in der vorherigen SQL Server 2012-Update Version enthalten waren.
Problembeschreibung
Es wird davon ausgegangen, dass Sie viele xp_cmdshell gespeicherten Prozeduren gleichzeitig in mehreren Sitzungen in Microsoft SQL Server 2012 ausführen. In diesem Fall wird die erste Ausführung der xp_cmdshell gespeicherten Prozedur erst abgeschlossen, wenn die letzte Ausführung abgeschlossen ist.
Ursache
Dieses Problem tritt auf, weil ein Handle von den Prozessen geerbt wird, die geöffnet werden, wenn Sie xp_cmdshell gespeicherte Prozeduren zur gleichen Zeit ausführen. Die CreateProcess -API erfordert die Vererbung von handle, um die Standardausgabe und die Fehlermeldung umzuleiten. Wenn mehrere Ausführungen der xp_cmdshell gespeicherten Prozedur zur gleichen Zeit ausgeführt werden, können neu geöffnete Prozesse das Handle von vorhandenen Prozessen erben. Die xp_cmdshell gespeicherte Prozedur wartet jedoch darauf, dass das Handle durch alle geöffneten Prozesse geschlossen wird. Wenn also mehrere Prozesse das Handle erben, müssen alle xp_cmdshell -Ausführungen warten, bis der Handle vom am längsten ausgeführten Prozess geschlossen wird.
Fehlerbehebung
Um dieses Problem zu beheben, wenden Sie das folgende kumulative Update an. Mit diesem Update werden STARTUPINFOEX-Optionen für CreateProcess-API hinzugefügt, die die Handle-Vererbung für crossprozess verhindern.
Informationen zum kumulativen Update
Kumulatives Updatepaket 1 für SQL Server 2012 Service Pack 1
Die Fehlerbehebung für dieses Problem wurde zuerst in Kumulatives Update 1 veröffentlicht. Wenn Sie weitere Informationen zum beziehen dieses kumulativen Updatepakets für SQL Server 2012 Service Pack 1 erhalten möchten, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
2765331 Kumulatives Updatepaket 1 für SQL Server 2012 Service Pack 1Hinweis Da die Builds kumulativ sind, enthält jede neue Fix-Version alle Hotfixes und alle Sicherheitsupdates, die in der vorherigen Version von SQL Server 2012 behoben wurden. Wir empfehlen, dass Sie die neueste Fix-Version anwenden, die diesen Hotfix enthält. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
2772858 Die SQL Server 2012-Builds, die nach der Veröffentlichung von SQL Server 2012 Service Pack 1 veröffentlicht wurden
SQL Server 2012
Die Fehlerbehebung für dieses Problem wurde zuerst in Kumulatives Update 4 veröffentlicht. Wenn Sie weitere Informationen zum beziehen dieses kumulativen Updatepakets für SQL Server 2012 benötigen, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
2758687 Kumulatives Updatepaket 4 für SQL Server 2012Hinweis Da die Builds kumulativ sind, enthält jede neue Fix-Version alle Hotfixes und alle Sicherheitsupdates, die in der vorherigen Version von SQL Server 2012 behoben wurden. Wir empfehlen, dass Sie die neueste Fix-Version anwenden, die diesen Hotfix enthält. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
2692828 Die SQL Server 2012-Builds, die nach der Veröffentlichung von SQL Server 2012 veröffentlicht wurden
Status
Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.
Informationsquellen
Weitere Informationen zur CreateProcess-Funktion finden Sie auf der folgenden MSDN-Website:
Allgemeine Informationen zur CreateProcess-FunktionWeitere Informationen zur xp_cmdshell gespeicherten Prozedur finden Sie auf der folgenden MSDN-Website:
Allgemeine Informationen zur xp_cmdshell gespeicherten Prozedur Wenn Sie weitere Informationen zu einem ähnlichen Problem erhalten möchten, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
315939 PRB: untergeordnete Elemente erben unbeabsichtigte Handles während des CreateProcess-Aufrufs