Если у меня есть название поля, можно ли узнать (поиск?), Является ли это PK, и если да, то в какой таблице?
Использование представлений INFORMATION_SCHEMA:
SELECT T.TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS T INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE K ON T.CONSTRAINT_NAME = K.CONSTRAINT_NAME WHERE T.CONSTRAINT_TYPE = 'PRIMARY KEY' AND K.COLUMN_NAME = @column_name
Это в INFORMATION_SCHEMA.TABLE_CONSTRAINTS
см
http://sqlserverpedia.com/blog/transact-sql-t-sql/how-do-i-select-the-field-name-primary-key-from-all-tables/
Вы должны быть немного осторожны. Теоретически у вас может быть 2 поля с одинаковыми именами в разных таблицах, и поле является первичным ключом в одной из них.