set @sql=''
select @sql=@sql+'['+name+']=x.['+name+'],'
from tempdb..syscolumns
where id=object_id('tempdb..#Tab2')
and name<>'tname'
set @sql=left(@sql,len(@sql)-1)
exec ('update Tab1 set '+@sql+' from Tab1 a,#Tab2 x where a.tname=x.tname')
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+',['+name+']=b.['+name+']' from syscolumns where id=object_id('tab2') and name!='tname'
set @sql='update a set '+stuff(@sql,1,1,'')+' from tab1 a,tab2 b where a.tname=b.tname'
print @sql
exec(@sql)