1. The @Iteration set statement needs 'AND C.index_id = I.index_id' added to 'JOIN SYS.INDEX_COLUMNS C'
SET @Iteration = (SELECT MAX(C.KEY_ORDINAL)
FROM SYS.INDEXES I
JOIN SYS.OBJECTS S-- Joining on SYS.OBJECTS to get the TableName
ON S.OBJECT_ID = I.Object_ID-- to ensure the
JOIN SYS.INDEX_COLUMNS C
ON C.OBJECT_ID = I.Object_ID
AND C.index_id = I.index_id-- ** 03/12/2010 CAJ **
WHERE I.Type = @ClusteredIndexType
AND I.OBJECT_ID NOT IN (SELECT OBJECT_ID
FROM SYS.ALL_OBJECTS
WHERE TYPE = 'S')-- Not system tables
AND S.Type = 'U'
AND S.is_ms_shipped = 0)
2. Add 'DECLARE @SchemaName SYSNAME;' at the top
3. Replace
OBJECT_ID(N''' + @TableName + ''')
with
OBJECT_ID(N''' + @SchemaName + '.' + @TableName + ''')