次の方法で共有


"The action could not be completed. Try again.” How many times before calling it a day?

The end-user just called you and stated that no matter how many times he keeps trying, the result is pretty much the same.

Ok, so it seems that the suggestion is not good enough. What can you do if all you have is this error message and a complaining user? Well, there is often a log file of some kind which you should be able to open up and correlate the error occurrences with some kind of a timestamp. Looking at the Event Viewer events is also a good first stop in case some relevant message is logged for that matter.

As a troubleshooter, though, you do not want to rely upon the unpredictability of those sources of data as far as your problem is concerned. You should be able to open your bag of tools and start digging in until you find the root cause. Depending on the nature of applications and technologies under your scope, this bag of tools may vary a lot. Let me describe my approach for this particular issue.

After figuring out that no additional information was being logged anywhere, I used the good ol’ Process Monitor and asked the user to reproduce the issue, as it happened every time.

Let’s follow the trace and try figuring out what was happening:

Rel. Time

Proc. Name

Operation

Path

Result

01.9671915

w3wp.exe

CreateFile

C:\WINDOWS\Help\iisHelp\common\401-1.htm

SUCCESS

01.9678824

w3wp.exe

QueryInformationVolume

C:\WINDOWS\Help\iisHelp\common\401-1.htm

SUCCESS

01.9679407

w3wp.exe

QueryAllInformationFile

C:\WINDOWS\Help\iisHelp\common\401-1.htm

BUFFER OVERFLOW

01.9682644

w3wp.exe

QueryStandardInformationFile

C:\WINDOWS\Help\iisHelp\common\401-1.htm

SUCCESS

01.9683613

w3wp.exe

ReadFile

C:\WINDOWS\Help\iisHelp\common\401-1.htm

SUCCESS

01.9697481

w3wp.exe

CloseFile

C:\WINDOWS\Help\iisHelp\common\401-1.htm

SUCCESS

At this stage, the worker process was loading this 401-1.htm file, so this was probably during the security handshake in which there is a credentials challenge and response process. No harm done here, eventually the credentials are accepted and the request proceeds.

Rel. Time

Proc. Name

Operation

Path

Result

02.0237073

w3wp.exe

RegOpenKey

HKLM\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo

SUCCESS

02.0238711

w3wp.exe

RegQueryValue

HKLM\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo\SRV09

NAME NOT FOUND

02.0239593

w3wp.exe

RegCloseKey

HKLM\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo

SUCCESS

02.0247650

w3wp.exe

RegOpenKey

HKLM\SOFTWARE\Microsoft\MSSQLServer\Client

SUCCESS

02.0248472

w3wp.exe

RegQueryValue

HKLM\SOFTWARE\Microsoft\MSSQLServer\Client\SharedMemoryOn

SUCCESS

02.0249054

w3wp.exe

RegCloseKey

HKLM\SOFTWARE\Microsoft\MSSQLServer\Client

SUCCESS

There you go, the request is being processed. Apparently, the worker process is now trying to connect to a SQL Server instance in a server named SRV09. If you’re not acquainted with the solution architecture, this is a good clue of where the data is being stored and retrieved from.

Next I had to scroll down a bit as there were tons of MUI-related events which do not add much. And then, I found these 3 lines:

Rel. Time

Proc. Name

Operation

Path

Result

02.0526899

w3wp.exe

CreateFile

C:\Program Files\Common Files\Microsoft Shared\web server extensions\60\BIN\2070

SUCCESS

02.0538345

w3wp.exe

QueryDirectory

C:\Program Files\Common Files\Microsoft Shared\web server extensions\60\BIN\2070\fpext.msg

SUCCESS

02.0539189

w3wp.exe

CloseFile

C:\Program Files\Common Files\Microsoft Shared\web server extensions\60\BIN\2070

SUCCESS

Something must have gone wrong within those 30 milliseconds.

Let’s see what follows:

Rel. Time

Proc. Name

Operation

Path

Result

02.0771572

w3wp.exe

RegQueryKey

HKU\S-1-5-21-1715567821-1682526488-682003330-3472_CLASSES

SUCCESS

02.0772552

w3wp.exe

RegOpenKey

HKU\S-1-5-21-1715567821-1682526488-682003330-3472_CLASSES\CLSID\{0C7FF16C-38E3-11D0-97AB-00C04FC2AD98}\ExtendedErrors

NAME NOT FOUND

02.0773562

w3wp.exe

RegOpenKey

HKCR\CLSID\{0C7FF16C-38E3-11D0-97AB-00C04FC2AD98}\ExtendedErrors

SUCCESS

02.0775303

w3wp.exe

RegQueryKey

HKCR\CLSID\{0C7FF16C-38E3-11d0-97AB-00C04FC2AD98}\ExtendedErrors

SUCCESS

02.0776561

w3wp.exe

RegOpenKey

HKCU\Software\Classes\CLSID\{0C7FF16C-38E3-11d0-97AB-00C04FC2AD98}\ExtendedErrors

NAME NOT FOUND

02.0777314

w3wp.exe

RegEnumKey

HKCR\CLSID\{0C7FF16C-38E3-11d0-97AB-00C04FC2AD98}\ExtendedErrors

SUCCESS

02.0779244

w3wp.exe

RegCloseKey

HKCR\CLSID\{0C7FF16C-38E3-11d0-97AB-00C04FC2AD98}\ExtendedErrors

SUCCESS

Indeed, something has gone wrong... Where? Well, this HKCR\CLSID\{0C7FF16C-38E3-11d0-97AB-00C04FC2AD98} is the SQLOLEDB CLSID, meaning that we can move on to SQL Server and figure out what is going on there.

By moving on to SQL Server, I mean starting a SQL Server trace on this SRV09, ensuring that OLEDB Errors is selected, as well as those basic events you’ll find in the usual templates concerning the SQL Statements execution.

Weird: according to https://technet.microsoft.com/en-us/library/cc917589.aspx, this exception stands for Too many arguments were supplied for procedure %. *ls, something we would not expect to happen in a Windows SharePoint Services/SQL Server environment. Anyway, by checking the statement which starts before the exception and gets completed immediately after it, we saw that the call did not really match the Stored Procedure signature.

In particular, the SP was expecting fewer parameters, thus the exception above. Given this mismatch, I suspected of an incomplete WSS patching or update, a plausible reason for this, as the code might have been changed along with the database schema and Stored Procedure implementation. Bulls-eye!! A few weeks before, this particular WSS server had been applied the latest Service Pack, and apparently that did not succeed, but no one noticed until this user tried to add a new field to a list.

See? No logs, no events, no hands on the steering wheel, just valuable information popping out of these great tools...

Regards,

Manuel Oliveira