以下のクエリを使用して、単一のデータベースを取得できます
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
しかし、サーバーで利用可能なすべてのデータベースについてリストしたかったのです
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
データベース名の使用は実際にはデータベースを変更しておらず、現在使用中のデータベースの結果セットを繰り返しているため、機能していません..これに関する提案、