SELECT col.COLUMN_NAME as name, CASE WHEN colCon.CONSTRAINT_NAME IS NOT NULL THEN 'true' ELSE 'false' END as primaryKey, CASE WHEN columnProperty(object_id(quotename(col.TABLE_SCHEMA)+'.'+quotename(col.TABLE_NAME)), col.COLUMN_NAME, 'IsIdentity') > 0 THEN 'true' ELSE 'false' END AS [identity], CASE WHEN col.IS_NULLABLE = 'No' THEN 'false' ELSE 'true' END as nullable, col.DATA_TYPE as dbDataType, CASE WHEN ISNUMERIC(col.CHARACTER_MAXIMUM_LENGTH) = 1 THEN col.CHARACTER_MAXIMUM_LENGTH ELSE 0 END as length, col.COLUMN_DEFAULT as [default], CASE WHEN columnProperty(object_id(quotename(col.TABLE_SCHEMA)+'.'+quotename(col.TABLE_NAME)), col.COLUMN_NAME, 'IsRowGUIDCol') = 1 THEN 'true' WHEN columnProperty(object_id(quotename(col.TABLE_SCHEMA)+'.'+quotename(col.TABLE_NAME)), col.COLUMN_NAME, 'IsComputed') = 1 THEN 'true' ELSE 'false' END as readOnly FROM INFORMATION_SCHEMA.COLUMNS as col LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS as tabCon ON col.TABLE_NAME = tabCon.TABLE_NAME AND tabCon.CONSTRAINT_TYPE = 'PRIMARY KEY' LEFT JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE as colCon ON col.COLUMN_NAME = colCon.COLUMN_NAME AND col.TABLE_NAME = colCon.TABLE_NAME AND colCon.CONSTRAINT_NAME = tabCon.CONSTRAINT_NAME WHERE col.TABLE_NAME =