Once upon a time in a version of SQL far far away we had system tables that were easy to see and could even be updated. One day one of these system tables “sysobjects” went to its fairy god-corporation Microsoft and begged to be hidden away from its mean step-dbas and step-users. Microsoft agreed and waved it’s magic version tool and poof SQL Server 2005 was born. The system tables (including sysobjects) were hidden away and re-named. New system views were created such as “sys.objects” and “sys.views” and were hailed as the “New and improved” versions of the original system tables. Also illusionary versions of the original system tables were created (views) in order to help to hide the system tables and to keep the DBAs and Users from screaming about backwards compatibility. The actual system tables were hidden and only the most experienced DBAs could find them and only when using special tools (DAC). And even then they could only be seen and not touched.

So when you go looking at the list of system views and you see sysobjects and sys.objects remember that once upon a time there was only the table sysobjects. And that the system view sysobjects will continue to haunt us until new code has stopped being written with it and it can be retired in peace.