• Just for fun I wanted to see how a CLR might stack up so I ran it through GROUP_CONCAT against 5000 tables with an average length of ~115 characters:

    Version using XML with a couple of the discussed tweaks:

    SELECT @SQLCmd = STUFF((SELECT CHAR(13) + CHAR(10) + --

    'EXEC sys.sp_rename @objname = N''' + SCHEMA_NAME(tab.schema_id) + '.' + tab.name + ''', ' + --

    '@newname = N''' + tab.name + '_' + CONVERT(VARCHAR(10), GETDATE(), 112) + ''', ' + --

    '@objtype = N''OBJECT'';'

    FROM sys.tables tab

    FOR XML PATH(''),

    TYPE).value('.', 'nvarchar(max)'), 1, 2, '');

    Version using CLR:

    SELECT @SQLCmd = GroupConcatTest.dbo.group_concat_d(N'EXEC sys.sp_rename ' + --

    N'@objname = N''' + SCHEMA_NAME(tab.schema_id) + N'.' + tab.name + N''', ' + --

    N'@newname = N''' + tab.name + N'_' + @dt + N''', ' + --

    N'@objtype = N''OBJECT''', N';' + NCHAR(13) + NCHAR(10))

    FROM sys.tables tab;

    ---------- opc.three CLR version ----------

    SQL Server Execution Times:

    CPU time = 140 ms, elapsed time = 240 ms.

    ---------- FOR XML PATH Version ----------

    SQL Server Execution Times:

    CPU time = 78 ms, elapsed time = 108 ms.

    There are no special teachers of virtue, because virtue is taught by the whole community.
    --Plato