Troubleshooting Business Logic Tier (BLT) errors
- Last UpdatedApr 24, 2025
- 2 minute read
The following provides some suggestions on how to resolve errors while executing a stored procedure, or trying to configure access to a new Business Logic Tier (BLT).
ODBC errors
Error Message = [DataDirect][OpenAccess ODBC]Invalid Procedure:procedure_name in query.
Stored procedure names are case sensitive. Check that you have specified the name using the correct case.
If the stored procedure is a BLT call, check the spelling of the procedure name in the Microsoft SQL Engine JSON file (see Configure additional Business Logic Tier (BLT) components).
If the stored procedure is a BLT call, check whether the service hosting the BLT is running or not.
Error Message = [DataDirect][OpenAccess ODBC]Invalid number of input parameters: #. The correct number is #.
The Microsoft SQL Engine does not support optional parameters. All parameters must be provided to the call, including both input and output parameters.
Note: An optional parameter can usually be passed in as a null, or some other suitable default value.
Error Message = [DataDirect][OpenAccess ODBC]Invalid dynamic stored procedure schema. Schema did not expose result column.
This message will appear if you try to execute a BLT which has been configured to not return results, as a BLT which does return results. Fix the configuration (see Configure additional Business Logic Tier (BLT) components) to properly categorize the BLT and restart the Microsoft SQL Engine.
General errors
Failure to return the correct output parameter value
Due to a bug in the toolkit used to build it, the Microsoft SQL Engine is not able to support stored procedure parameters which are both an input and an output parameter. The input value will be processed correctly; however, the output value will not be passed back to the caller (the value will stay the same).
CrpcCmxBase::srvToCmxType Error. Unknown Type Found: 0
This message may be seen in the oasErrLog if you pass a parameter, but have not provided an initial value for the parameter. It can be fixed either by providing an initial value (for example null), or by modifying the BLT code to check whether the parameter is of type VT_EMPTY before trying to use the value.