• 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