This procedure will do what you need. You can run it as follows:
exec p_rename_columns N'<mytable>'
Note that the procedure assumes that the “first” line is the physical first line on the disk. Since this may change depending on which field the clustered index in the table is used in, it is not 100% guaranteed.
Procedure Code:
create proc p_rename_columns (@table sysname)
AS
declare @name sysname,
@col sysname,
@sql nvarchar(max)
declare cur cursor
local read_only
for select name
from sys.columns
where object_id = object_id(@table)
open cur
fetch next from cur into @name
while @@fetch_status = 0
begin
select @sql = N'select top (1) @col = ' + quotename(@name) + N' from ' + quotename(@table)
exec sp_executesql @sql, N'@col sysname output', @col output
select @sql = N'exec sp_rename ''' + quotename(@table) + N'.' + quotename(@name) + N''', ''' + @col + N''''
exec (@sql)
fetch next from cur into @name
end
close cur
deallocate cur
select @sql = N'DELETE TOP (1) from ' + quotename(@table)
exec (@sql)
GO