The order of the primary key fields should be the order they are returned in.
INFORMATION_SCHEMA.KEY_COLUMN_USAGE.ORDINAL_POSITION gives the order of the primary key, hence the order by clause. You might want to explicity add CU.ORDINAL_POSITION to the selected fields to prove this.
I've...
OK, I've done some poking around....
The table with the last bit of information needed is INFORMATION_SCHEMA.TABLE_CONSTRAINTS. This has a column, CONSTRAINT_TYPE which (amongst others) can contain 'PRIMARY KEY'.
The following query will list all tables and their primary keys.
It's not...
There's a bunch of meta-information tables that you can use for finding this sort of information.
(It generally involves a lot less messing about than using sysobjects etc.)
Look up INFORMATION_SCHEMA. (I'd do it myself, but it's late here and my after-midnight google-fu is amazingly weak)...
A brief re-statement of the problem:
You already have a primary key on the table, id. It is (obviously) unique, and can be used to identify a specific row.
You are after some way of recognising rows that have duplicate data in the remaining columns.
Can you do something like:
(forgive me...
I've just bought a 300Gb SATA drive myself, but avoided the seagate 7200.9 as it's SATA II and some (slightly older) motherboards can't understand them. I don't know if this is your trouble.
I bought a Maxtor SATA II drive, because they come with a jumper setting to force them to play as a...