ниже - это запрос с разрешением по большинству важных частей в запросе sys.columns.Я уверен, что есть несколько типов данных, которые я пропустил, просто сделал это из текущей базы данных, над которой я работаю.
select
c.name column_name
,type_name(c.user_type_id) type_name
,case
when type_name(c.user_type_id) in ('bit','int','bigint','datetime','datetime2','timestamp','date','text','ntext','uniqueidentifier','xml')
then type_name(c.user_type_id)
when type_name(c.user_type_id) in ('char','nchar','varchar','nvarchar','varbinary','binary')
then type_name(c.user_type_id) + '(' + iif(c.max_length = -1,'max',rtrim(c.max_length)) + ')'
when type_name(c.user_type_id) in ('numeric','decimal')
then type_name(c.user_type_id) + '('+ rtrim(c.precision) + ',' + rtrim(c.scale) + ')'
end scripting_type_name
,c.max_length data_max_length
,c.object_id table_object_id-- the table object_id from sys.tables (alternatively
,t.name table_name
,s.name schema_name
,@@servername + '.' + db_name() + '.' + s.name + '.' + t.name + '.' + c.name fifth_level_uncallable_in_sql --@@servername is sometimes inaccurate, serverproperty('MachineName') is direct and current.
from sys.columns c
inner join sys.tables t on t.object_id = c.object_id
inner join sys.schemas s on s.schema_id = t.schema_id