Database Programming: IDENT_CURRENT() Behavior Change In SQL Server 2005

An email recently crossed my inbox (if electrons are capable of crossing a virtual construct like an email folder.. an existential conversation for a different day) which discussed a previously unknown change in the behavior of the IDENT_CURRENT() function between SQL Server 2000 and SQL Server 2005.

In SQL Server 2000, IDENT_CURRENT() always returns a value when executed against a non-empty table with an identity column.

In SQL Server 2005, the IDENT_CURRENT() function will return a NULL value unless the user has one of the following permissions to the underlying table: ALTER, CONTROL, DELETE, INSERT, REFERENCES, SELECT, TAKE OWNERSHIP, UPDATE, VIEW DEFINITION.

This change is consistent with and a fallout of the new security model in SQL Server 2005, whereby the server "denies the existence" of objects to which the user lacks permissions.

   -wp