You can use the undocumented sp_MSforeachdb procedure for this task. Just tested on my surroundings it works flawlessly.
EDIT
As Pondlife pointed out, the database part was missing from the three part name syntax. Added and now works correctly. A WHERE also been added to avoid searching unnecessary databases like master , msdb , tempdb and model .
EXEC sp_MSforeachdb 'SELECT Table_catalog[Instance Name], Table_name[Database Table], Column_name[Column], Data_type[Column Type] FROM ?.information_schema.columns WHERE Data_type in (''varchar'') AND ''?'' NOT IN (''master'',''msdb'',''tempdb'',''model'') ORDER BY Table_name,Data_type'
Just in case, if you want to know more about this undocumented procedure, check here and. Remember that undocumented means that Microsoft officially does not support this procedure, and therefore it may change without warning.
Example result from AdventureWorks2008R2 database:
Instance Name Database Table Column Column Type AdventureWorks2008R2 Customer AccountNumber varchar AdventureWorks2008R2 Password PasswordHash varchar AdventureWorks2008R2 Password PasswordSalt varchar AdventureWorks2008R2 SalesOrderHeader CreditCardApprovalCode varchar
source share