Quote Originally Posted by simonm View Post
Code:
        Set cmUpdate = New command
        Set cmUpdate.ActiveConnection = cnSource
        cmUpdate.CommandType = adCmdStoredProc
        cmUpdate.CommandTimeout = 120
        cmUpdate.CommandText = strProcName
        cmUpdate.Parameters.Append cmUpdate.CreateParameter("ReturnValue", adInteger, adParamReturnValue)
        cmUpdate.Parameters.Append cmUpdate.CreateParameter("ID", adInteger, adParamInput, , rsSource(strKeyName))
        cmUpdate.Parameters.Append cmUpdate.CreateParameter("LastRead", adBinary, adParamInput, 8, rsSource!LastUpdate_ts)
        cmUpdate.Parameters.Append cmUpdate.CreateParameter("Result", adInteger, adParamOutput)
As soon as the line in red is executed, the parameters are now fully populated automatically. So the later parameter creation code just duplicates them.

No code changes and no changes to SQL Server recently (that I am aware of)...
Sounds like a leftover

Check the Paremeters-Collection BEFORE executing your red line

Is it empty? Check the Count-Property

And try:
Set cmUpdate = Nothing as the first line (before setting it to a New Command)