Este script sirve para generar comandos de UPDATE sobre las columnas de todas las tablas de la base de datos que sean de tipo nvarchar/varchar.
Se tiene una bandera [@fExec] que si tiene valor 0 solo se mostrarán los comandos generados.
Si la bandera [@fExec] tiene valor 1 ENTONCES SE EJECUTARÁN TODOS LOS UPDATES.
declare @t table (ROWID int identity (1, 1), XSQL varchar(4000)); declare @fExec bit = 0; insert into @t (XSQL) select 'update [' + d.name + '].[' + a.name + '] set [' + b.name + '] = upper([' + b.name + ']);' as XSQL from sys.objects a inner join sys.columns b on b.object_id = a.object_id inner join sys.types c on c.system_type_id = b.system_type_id and not c.name in ('sysname') inner join sys.schemas d on d.schema_id = a.schema_id where a.type = 'u' and not a.name in ('sysdiagrams', '__EFMigrationsHistory') and not a.name like '%filtro para no tomar en cuenta otras tablas%' and not a.name like '%filtro para no tomar en cuenta otras tablas%' and c.name in ('nvarchar', 'varchar') order by d.name, a.name, b.name, c.name; if (@fExec = 0) select * from @t; else begin declare @n int, @i int, @XSQL varchar(4000); set @n = (select count(*) from @t); set @i = 1; while (@i <= @n) begin set @XSQL = (select XSQL from @t where ROWID = @i); exec (@XSQL); set @i += 1; end; end; go