Eine Google-Suche führte zu Millionen von Treffern beim Auffinden von Tabellen ohne Clustered-Index, wobei die PK normalerweise der Clustered-Index einer Tabelle ist. Eine Tabelle kann jedoch leicht einen natürlichen Schlüssel als Clustered-Index und einen nicht-Clustered-Surrogat-Index wie eine Identitätsspalte haben.
Wie finde ich alle Tabellen in einer Datenbank ohne definierten Primärschlüssel? Ich habe 245 Tabellen in dieser Datenbank: Die manuelle Überprüfung ist äußerst ineffizient.
sys.tables
selbst gibt die ID und danke, dass Sie diese wunderbare Funktion gezeigt haben.objectproperty()
ist ab 2005 verfügbar. Ich habe gerade bol überprüft, oder?Mikes Lösung ist hervorragend für das spezifische Problem.
Wenn Sie mehr Flexibilität wünschen, hier ist eine Alternative , die leicht in eine Abfrage , dass die Renditen andere Informationen, wie die Suche nach allen Tabellen gemorpht werden können , die Haufen sind, oder die Suche nach Tabellen , die keine eindeutigen Einschränkungen haben überhaupt .
Sobald Ihr (Sub-) System über ~ 50 Tabellen verfügt, ist es wirklich wichtig, sich mit allen Metadatentabellen vertraut zu machen, da es, wie Sie sagten, unpraktisch (und fehleranfällig!) Ist, jede Tabelle manuell durchzugehen.
quelle
Die Richtlinienverwaltungsfunktion von SQL Server kann einige davon ausführen.
Die Tabellenfacette enthält die Felder @HasIndex und @HasClusteredIndex (sowie andere nützliche Felder wie Trigger). Es kann eine Richtlinie erstellt werden, um die Bedingungen für alle Tabellen, in allen Datenbanken und auf mehreren Servern zu überprüfen (mithilfe der Funktion "Central Management Server").
Es kann jedoch nicht überprüft werden, ob ein Primärschlüsselindex oder eine Einschränkung vorhanden ist. Ich hätte geschworen, dass es ein Feld @HasPrimaryKey gibt, aber es ist in MSSQL2012 nicht vorhanden. Ich erinnere mich entweder falsch oder werde verrückt.
Hinweis: Die Richtlinienverwaltung ist in den Editionen SQL Server 2012 Enterprise, Business Intelligence und Standard enthalten. Es ist nicht in der Express Edition verfügbar.
quelle