I had a view (SQL Server 2012) that read from another database and had UNION. The above requests did not help me, so I decided to use Profiler to check how SSMS would receive information. This is what I came across:
SELECT
clmns.name AS [Name]
,usrt.name AS [DataType]
,CAST(CASE WHEN baset.name IN (N'nchar', N'nvarchar') AND clmns.max_length <> -1 THEN clmns.max_length/2 ELSE clmns.max_length END AS int) AS [Length]
,CAST(clmns.precision AS int) AS [NumericPrecision]
,CAST(clmns.scale AS int) AS [NumericScale]
,clmns.column_id AS [ID]
FROM sys.all_views AS v
INNER JOIN sys.all_columns AS clmns
ON clmns.object_id=v.object_id
LEFT OUTER JOIN sys.indexes AS ik
ON ik.object_id = clmns.object_id
AND 1=ik.is_primary_key
LEFT OUTER JOIN sys.types AS usrt
ON usrt.user_type_id = clmns.user_type_id
LEFT OUTER JOIN sys.types AS baset
ON (baset.user_type_id = clmns.system_type_id AND baset.user_type_id = baset.system_type_id)
OR ((baset.system_type_id = clmns.system_type_id) AND (baset.user_type_id = clmns.user_type_id) AND (baset.is_user_defined = 0) AND (baset.is_assembly_type = 1))
LEFT OUTER JOIN sys.xml_schema_collections AS xscclmns
ON xscclmns.xml_collection_id = clmns.xml_collection_id
WHERE v.[type] = 'V'
AND v.name ='<your view name>'
AND SCHEMA_NAME(v.schema_id)='<your schema name>'
ORDER BY [ID] ASC
source
share