29024: no matching function strings found

Symptom

The error message is similar to the following:

Jan 26 11:27:59.300 2006: Error: 29204, Line: 864, File:
'generic/dsi/fstrmap.c' - Cannot find a matching
function string for function 'stocks.rs_insert' and
function class 'rs_sqlserver_function_class'.

Explanation

This error occurs when Replication Server cannot find a function string to match a function. The DSI thread is suspended.

Solution

To correct the problem:

  1. Query the RSSD at the primary site of the function string to determine if the function string exists there. Use this query for strings with replication definition scope:

    select name from rs_funcstrings, rs_functions,
       rs_classes, rs_objects
    where rs_funcstrings.classid = rs_classes.classid
       and rs_funcstrings.funcid = rs_functions.funcid
       and classname = function_class_name
       and classtype = 'F'
       and rs_functions.objid = rs_objects.objid
       and rs_objects.objname = replication_definition
       and objtype = 'R' and funcname = function_name
    

    If the function string does not exist at the primary site, continue with step 2.

    If the function string does exist at the primary site, go to step 3.

  2. If the function string does not exist at the primary site, create it there. If you omit the output clause from the string, Replication Server generates the default function string.

  3. If the function string does exist at the primary site, it hasn’t been replicated to the Replication Server at the replicate site. Verify that the RSSD at the primary site is being replicated to the replicate site. Refer to Chapter 1, “Identifying the Problem”, for details. If changes at the primary site are being replicated to the replicate site, then you may need to wait for the function strings to arrive. Then restart the DSI.

  4. For rs_select and rs_select_with_lock, there must be a function string whose input template matches the where clause of the select command. Extend the above query with a join to rs_systext to retrieve the input templates of function strings.

    If the DSI receiving the error is communicating with a server using a function-string class other than the rs_sqlserver_function_class, rs_default_function_class, or rs_db2_function_class, you may still need to create the function string mentioned in the preceding paragraph.