2016-07-20 2 views
1

Ich habe eine seltsame Situation. Ich habe einen Fall, in dem ich eine Primärschlüsselspalte, aber nicht die Tabelle kenne, in der es sich befindet.Suchen Sie eine Tabelle, wo der Primärschlüssel bekannt ist

Wer weiß einen schnellen und einfachen Weg, diese Information zu finden? Ich hatte gehofft, dass sp_pkeys das können, aber ich kann die Spalte nicht als Parameter verwenden.

Edit: Dies ist nicht die gleiche wie die Suche nach Tabellen mit einer Spalte (ich weiß schon, wie das zu tun). Ich suche Tabellen mit einem spezifischen Primärschlüssel (das ist eine Teilmenge der "doppelte Frage").

+0

Mögliche Duplikat [alle Tabellen finden Spalte mit dem angegebenen Namen enthält] (http://stackoverflow.com/questions/4849652/find-all-tables-containing-column-with-specified-name) –

+0

Nein , nicht die gleiche Frage. Ich weiß bereits, wie man Tabellen mit der spezifischen Spalte findet; Ich suche nach einer Tabelle mit einem bestimmten Primärschlüssel. –

Antwort

2
SELECT COLUMN_NAME, TABLE_NAME 
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
WHERE OBJECTPROPERTY(OBJECT_ID(CONSTRAINT_SCHEMA + '.' + CONSTRAINT_NAME), 'IsPrimaryKey') = 1 
AND COLUMN_NAME = 'yourColumnName' 
+0

Das scheint zu funktionieren! –

1

Hier ist eine andere Möglichkeit, dies zu tun.

select OBJECT_NAME(c.Object_ID) 
from sys.columns c 
join sys.indexes i on c.object_id = i.object_id 
where i.is_primary_key = 1 
    and c.name = 'YourColumn' 
+0

Funktionierte nicht für mich - um es zu testen, habe ich versucht, sp_pkeys mit den Ergebnissen auszuführen, und es gab mir Antworten, wo es mir eine PK mit einer anderen Spalte gab. Es tut uns leid. –

+0

Vielleicht haben Sie Tabellen mit demselben Namen in verschiedenen Schemas. Naja ... sieht so aus als hättest du eine Antwort, die für dich funktioniert. –

+0

Vielleicht. Da ich dich von SSC kenne, bin ich voreingenommen und wollte deine als die Antwort markieren, aber c'est la vie. :-) Naja. –

Verwandte Themen