Können Sie mir helfen, eine Abfrage zu erstellen, die die Einschränkungen in allen Tabellen abruft, die Anzahl der Einschränkungen in jeder Tabelle und NULL für Tabellen anzeigt, die KEINE Einschränkungen haben. Danke im Voraus!SQL Server 2008 - Tabelleneinschränkungen abrufen
Dies ist, was ich bisher:
Select SysObjects.[Name] As [Constraint Name] ,
Tab.[Name] as [Table Name],
Col.[Name] As [Column Name]
From SysObjects Inner Join
(Select [Name],[ID] From SysObjects) As Tab
On Tab.[ID] = Sysobjects.[Parent_Obj]
Inner Join sysconstraints On sysconstraints.Constid = Sysobjects.[ID]
Inner Join SysColumns Col On Col.[ColID] = sysconstraints.[ColID] And Col.[ID] = Tab.[ID]
order by [Tab].[Name]
Vielen Dank für Ihre Hilfe Marc, aber ich hatte auf eine Abfrage mit sysObjects selbst gehofft. Gibt es eine Möglichkeit, meine Abfrage zu optimieren, um die erforderlichen Ergebnisse zu erhalten? – unos
Ihre Abfrage listet nur die erste Einschränkung in der ersten Tabelle auf. –
@SteveStaple: Nein, tut es nicht ..... Ich benutze dies die ganze Zeit - es listet ** alle ** Einschränkungen für ** alle ** Tabellen! Versuchen Sie es auf "AdventureWorks" - ich bekomme 152 Zeilen, und mehrere Tabellen haben mehrere Einschränkungen, z. Die Tabelle "Employee" enthält nicht weniger als sechs Einschränkungen, die alle gut dargestellt werden .... –