sp_MSforeachdb can do the trick for you:
EXECUTE master.sys.sp_MSforeachdb ' use [?]; declare @user sysname = ''MyUserName'' if db_name() not in (''master'', ''model'', ''msdb'', ''tempdb'') begin if not exists ( select null from dbo.sysusers where name = @user ) begin print ''Adding '' + @user + '' to '' + db_name(); exec sp_grantdbaccess @user, @user; end; print ''Granting '' + @user + '' read access to '' + db_name(); exec sp_addrolemember db_datareader, @user; end; '
source share