Проблема заключается в том, как вы пытаетесь использовать параметры в предложениях LIKE.
т.е. значения @creatorID и @nodeType на самом деле не используются в условиях LIKE - вы на самом деле ищете xml, где (например) он ВСЕГДА похож на '% creatorID = "@ creatorID"'
Вам нужно убедиться, что ваш запрос не выглядит так:
SELECT TOP (@max) [nodeId]
FROM [dbo].[cmsContentXml]
WHERE [xml] like '%creatorID="@creatorID"%'
AND [xml] like '%nodeType="@nodeType"%'
ORDER BY [nodeId] DESC
Но вместо этого:
SELECT TOP (@max) [nodeId]
FROM [dbo].[cmsContentXml]
WHERE [xml] like '%creatorID="' + CAST(@creatorID AS VARCHAR(50)) + '"%'
AND [xml] like '%nodeType="' + CAST(@nodeType AS VARCHAR(50)) + '"%'
ORDER BY [nodeId] DESC
Так что-то вроде:
DECLARE @SQL NVARCHAR(1000)
SET @SQL = '
SELECT TOP (@max) [nodeId]
FROM [dbo].[cmsContentXml]
WHERE [xml] like ''%creatorID="'' + CAST(@creatorID AS VARCHAR(50)) + ''"%''
AND [xml] like ''%nodeType="'' + CAST(@nodeType AS VARCHAR(50)) + ''"%''
ORDER BY [nodeId] DESC'
exec sp_executesql @SQL,
N'@max int,@creatorID int,@nodeType int',
@max=50,@creatorID=29,@nodeType=1086