Если я понимаю ваш вопрос, вы можете попытаться сгенерировать динамический оператор SQL и выполнить этот оператор:
-- Declarations
DECLARE @stm nvarchar(max)
SET @stm = N''
-- Dynamic SQL
SELECT @stm = (
SELECT CONCAT(
N'UNION ALL ',
N'SELECT ''',
t.name,
N''' AS TableName, ''',
c.name,
N''' AS ColumnName, ',
N'ValueLength = (SELECT MAX(LEN(',
QUOTENAME(c.name),
')) FROM ',
QUOTENAME(t.name),
N')'
)
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name LIKE 'site%'
ORDER BY t.name, c.name
FOR XML PATH('')
)
SET @stm = STUFF(@stm, 1, 10, N'')
-- Execution
PRINT @stm
EXEC sp_executesql @stm