• I would suggest an alternative piece of code in one area you are using. When checking your type 2 attributes for change, you are using a lot of “not equal” checks, and transforming each attribute with a ISNULL.

    This type of work falls into an area called “data fingerprinting”: checking to see if the finger print is different or not. Try wrapping the attributes you want checked in a CHECKSUM function, either individually listing each column or the entire record:

    CHECKSUM(DST.ClientName, DST.Country, DST.Town,

    DST.Address1, DST.Address2, DST.ClientType, DST.ClientSize) <>

    CHECKSUM(SRC.ClientName, SRC.Country, SRC.Town,

    SRC.Address1, SRC.Address2, SRC.ClientType, SRC.ClientSize)

    Or

    CHECKSUM(DST.*) <> CHECKSUM(SRC.*)

    I typically use the individual fields approach myself.

    Beer's Law: Absolutum obsoletum
    "if it works it's out-of-date"