I am able to retrieve for a single database using the below query
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')
Order by Table_name,Data_type
but I wanted to list it for all available databases in the server
Declare @I int =1,@Qry nVarchar(1000),@DatabaseName nvarchar(100)
Declare @TempTable Table
(
Sno Int Identity(1,1),
DatabaseName Varchar(100)
)
Insert into @TempTable
Select name
from sys.databases
where database_id>4
Select * from @TempTable
While(@i<=(Select max(sno) from @TempTable))
Begin
Select @DatabaseName=DatabaseName from @TempTable where sno=@i
Select @DatabaseName
set @Qry='Use '+ @DatabaseName
**exec sp_executesql @Qry**
set @Qry= '
Select Table_catalog[Instance Name],
Table_name[Database Table],
Column_name[Column],
Data_type[Column Type]
FROM information_schema.columns
where Data_type in (''datetime'',''date'',''time'',''smalldatetime'')
Order by Table_name,Data_type'
exec sp_executesql @Qry
Set @i=@i+1
End
Its not working since the use databasename is not actually changing the database and repeat the result set of the database currently in use .. any suggestions on this,