SQL Server - list all tables without a primary key
Is it possible to produce a list of all tables within a specified database that don't have a primary key?
This is SQL Server 2005.
Solution 1:
This really belongs more on StackOverflow rather than ServerFault, doesn't it?
Anyway, I found this script that I posted a few years back: List all tables without a primary key. It works for SQL 2000+.
Solution 2:
yikes! information schema views are ugly.
If your database is 2005, then you should use the catalog views, as recommended by MS
Here's my solution:
SELECT
* from sys.tables
WHERE object_id not in
(SELECT object_id from sys.indexes WHERE is_primary_key=1)