Key cannot be null


We are calling a timer every 5 minutes to check for new data on a remote database.  Ever since we updated our platform from OS10 to OS11 we get the following error when there is no new data on the remote database:

Key cannot be null.
Parameter name: key

This error doesn't cause any problems for the users but it fills up our error log pretty quickly.  

My question is this:
What causes this error in OS11 when this was running smoothly for a few years in OS10?
This is the call that we have been using:

/* %LogicalDatabase%=GetLogicalDatabase({MyDatabase}) */

Hi Aron,

It's unlikely that the platform upgrade from OS10 to OS11 would introduce changes in the way it executes the SQL query you shared.

Is it possible that the team responsible for the maintenance of the GW_PEEK_ASYNC stored procedure changed it so that either the procedure signature or something inside the procedure requires a new parameter? If the procedure was not changed, I suggest that you investigate if it uses a dependency that was changed. One such dependency could be the OutSystems data model, if you are accessing it directly inside the said stored procedure.

With the information you give its difficult to understand the issue. Please share more findings, it will help to drill down on the issue.



Rank: #106


It is quite possible that the Stored Procedure definition, or signature may have changed. Frederico has pointed towards same.

If your DBuser has sufficient privilege, you should be able to query the remote database to check the definition and the parameters.

  1. EXEC sp_helptext N'DatabaseName.dbo.GW_PEEK_ASYNC';  
  2. SELECT * 
    FROM sys.parameters 
    INNER JOIN sys.procedures ON parameters.object_id = procedures.object_id 
    INNER JOIN sys.types ON parameters.system_type_id = types.system_type_id AND parameters.user_type_id = types.user_type_id
    WHERE procedures.name = 'GW_PEEK_ASYNC'



Rank: #29738

Was this ever resolved?

Key cannot be null.
Parameter name: key

Rank: #452

Hi Aron, 

Are you sure the log is output when you calling the stored procedure?

Not the after step?