SELECT t.name
AS [Table], c.name
AS [Column], c.collation_name
AS [Collation], TYPE_NAME( c.system_type_id)
AS [TypeName], c.max_length
AS [TypeLength]
FROM sys.columns c
RIGHT JOIN sys.tables t ON c.object_id = t.object_id
SELECT NULL mykey,
c.name,
t.name AS [Table],
c.name AS [Column],
c.collation_name AS [Collation],
Type_name(c.system_type_id) AS [TypeName],
c.max_length AS [TypeLength]
INTO #temp
FROM sys.columns c
RIGHT JOIN sys.tables t
ON c.object_id = t.object_id
WHERE c.collation_name IS NOT NULL
SET ROWCOUNT 1
UPDATE #temp SET mykey = 1
WHILE @@ROWCOUNT > 0
BEGIN
SET ROWCOUNT 0
SELECT @table = [Table],
@column = [Column],
@type = TypeName,
@typeLenght = TypeLength
FROM #temp
WHERE mykey = 1
IF CONVERT(INT, @typeLenght) > 0 AND ( @type = 'nvarchar' OR @type = 'nchar' )
BEGIN
SET @typeLenght=CONVERT(NVARCHAR(128), CONVERT(INT, @typeLenght) / 2)
END
IF @typeLenght = '-1'
BEGIN
SET @typeLenght='max'
END