Quick suggestion
😎
SELECT
SAC.object_id
,SAC.name
,SAC.column_id
,SAC.system_type_id
,SAC.user_type_id
,SAC.max_length
,SAC.precision
,SAC.scale
,SAC.collation_name
,SAC.is_nullable
,SAC.is_ansi_padded
,SAC.is_rowguidcol
,SAC.is_identity
,SAC.is_computed
,SAC.is_filestream
,SAC.is_replicated
,SAC.is_non_sql_subscribed
,SAC.is_merge_published
,SAC.is_dts_replicated
,SAC.is_xml_document
,SAC.xml_collection_id
,SAC.default_object_id
,SAC.rule_object_id
,SAC.is_sparse
,SAC.is_column_set
FROM sys.all_columns SAC
WHERE SAC.object_id = OBJECT_ID('TableName')
To compare the values you can concatenate the column values and use the hashbyte to generate a checksum
SELECT
ST.ID_KEY
,HASHBYTES('SHA1',ST.ColSet.value('.','nvarchar(max)')) AS SHA1_VAL
,ROW_NUMBER() OVER
(
PARTITION BY HASHBYTES('SHA1',ST.ColSet.value('.','nvarchar(max)'))
ORDER BY ST.ID_KEY
) AS DUPE_RID
FROM dbo.SomeTable ST