There's no need to "cheat" and use the syscolumns and sysobjects tables. While INFORMATION_SCHEMA doesn't have the information on identity columns, they OBJECTPROPERTY(<objectid>, 'TableHasIdentity') function tells you which tables have an identity column and you can use it in the WHERE clause to filter the tables from INFORMATION_SCHEMA. You can also use the COLUMNPROPERTY function to test each column.
I see that a previous post identified that also. Instead of keeping around a script, I try and code scripts into User-Defined Fucntions (UDF)s so that they're always in the database. Mine follows. You'll also need the function udf_SQL_DataTypeString from here:
http://www.novicksoftware.com/UDFofWeek/Vol1/T-SQL-UDF-Volume-1-Number-18-udf_SQL_DatatypeString.htm
SET
ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE
FUNCTION [dbo].[udf_Tbl_IdentityTAB] (
@Table_Name_Pattern sysname = NULL -- Pattern for table
-- names to include or NULL for all
) RETURNS TABLE
-- No SCHEMABINDING due to use of INFORMATION_SCHEMA
/*
* Returns a table of information about the identity columns
* in tables including their column, data type, and the
* seed, increment, and current value.
*
* Example:
select * FROM dbo.udf_Tbl_IdentityTAB(default)
* History:
* When Who Description
* ------------- ------- -----------------------------------------
* 2006-04-02 anovick Added IsMsShipped test
* 2003-04-02 anovick Initial Coding
*
* © Copyright 2002, 2006 Andrew Novick http://www.NovickSoftware.com
* You may use this function in any of your SQL Server databases
* including databases that you sell, so long as they contain
* other unrelated database objects. You may not publish this
* UDF either in print or electronically except where posted by the author.
****************************************************************/
AS RETURN
SELECT TOP 100 PERCENT WITH TIES
T.TABLE_SCHEMA
, T.TABLE_NAME
, COALESCE(C.COLUMN_NAME, '<not available to you>')
as [COLUMN_NAME]
, C.DATA_TYPE as DATA_TYPE
, IDENT_SEED(T.TABLE_NAME) AS Seed
, IDENT_INCR(T.TABLE_NAME) AS Increment
, IDENT_CURRENT(T.TABLE_NAME) [Current_Value]
FROM INFORMATION_SCHEMA.TABLES T
LEFT OUTER JOIN ( -- LOJ - COLUMN SECURITY COULD LIMIT ACCESS
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME
, ORDINAL_POSITION
, dbo.udf_SQL_DataTypeString (DATA_TYPE
, CHARACTER_MAXIMUM_LENGTH
, NUMERIC_PRECISION
, NUMERIC_SCALE) AS DATA_TYPE
FROM INFORMATION_SCHEMA.[COLUMNS]
WHERE 1=COLUMNPROPERTY(OBJECT_ID(TABLE_SCHEMA
+ '.' + TABLE_NAME)
, COLUMN_NAME
, 'IsIdentity')
) C
ON T.TABLE_SCHEMA = C.TABLE_SCHEMA
AND T.TABLE_NAME = C.TABLE_NAME
WHERE T.TABLE_TYPE = 'BASE TABLE'
AND (@Table_Name_Pattern IS NULL
OR T.TABLE_NAME LIKE @Table_Name_Pattern)
AND 1= OBJECTPROPERTY(OBJECT_ID(T.TABLE_NAME),
'TableHasIdentity')
AND NOT 1=OBJECTPROPERTY(OBJECT_ID(T.TABLE_NAME) ,
'IsMsShipped')
ORDER BY T.TABLE_SCHEMA, T.TABLE_NAME