Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

11 Möglichkeiten zum Zurückgeben von Fremdschlüsseln in einer SQL Server-Datenbank mit T-SQL

Dieser Artikel stellt elf verschiedene Ansätze zum Abrufen von Fremdschlüsselinformationen in SQL Server vor. Einige davon sind je nach Situation nützlicher als andere.

Einige dieser Methoden können modifiziert werden, um weitere Informationen zurückzugeben. Beispielsweise könnten Sie Joins für verschiedene Systemansichten durchführen, um mehr Daten zurückzugeben.

Beispiel 1 – Die gespeicherte Systemprozedur sp_fkeys

Die sp_fkeys Die gespeicherte Systemprozedur gibt logische Fremdschlüsselinformationen für die aktuelle Umgebung zurück. Es zeigt Fremdschlüsselbeziehungen einschließlich deaktivierter Fremdschlüssel.

Diese gespeicherte Prozedur ist ideal, wenn Sie Fremdschlüsselinformationen für eine bestimmte Tabelle benötigen. Sie übergeben einfach den Namen der Primär- oder Fremdschlüsseltabelle an die Prozedur, und sie gibt die relevanten Informationen zurück.

Beispiel:

EXEC sp_fkeys @fktable_name =Alben;

Ergebnis (bei vertikaler Ausgabe):

-[ RECORD 1 ]-------------------------PKTABLE_QUALIFIER | MusikPKTABLE_OWNER | dboPKTABLE_NAME | KünstlerPKCOLUMN_NAME | ArtistIdFKTABLE_QUALIFIER | MusikFKTABLE_OWNER | dboFKTABLE_NAME | AlbenFKCOLUMN_NAME | ArtistIdKEY_SEQ | 1UPDATE_RULE | 1DELETE_RULE | 1FK_NAME | FK_Albums_ArtistsPK_NAME | PK__Artists__25706B50FCD918B1AUFSCHIEBBARKEIT | 7-[ RECORD 2 ]-------------------------PKTABLE_QUALIFIER | MusikPKTABLE_OWNER | dboPKTABLE_NAME | GenresPKCOLUMN_NAME | GenreIdFKTABLE_QUALIFIER | MusikFKTABLE_OWNER | dboFKTABLE_NAME | AlbenFKCOLUMN_NAME | GenreIdKEY_SEQ | 1UPDATE_RULE | 1DELETE_RULE | 1FK_NAME | FK_Albums_GenresPK_NAME | PK__Genres__0385057E88BB96F8AUFSCHIEBBARKEIT | 7

Eine andere Möglichkeit, diese Ansicht zu verwenden, besteht darin, den Namen der Primärschlüsseltabelle anzugeben:

EXEC sp_fkeys @pktable_name =Künstler;

Ergebnis (bei vertikaler Ausgabe):

-[ RECORD 1 ]-------------------------PKTABLE_QUALIFIER | MusikPKTABLE_OWNER | dboPKTABLE_NAME | KünstlerPKCOLUMN_NAME | ArtistIdFKTABLE_QUALIFIER | MusikFKTABLE_OWNER | dboFKTABLE_NAME | AlbenFKCOLUMN_NAME | ArtistIdKEY_SEQ | 1UPDATE_RULE | 1DELETE_RULE | 1FK_NAME | FK_Albums_ArtistsPK_NAME | PK__Artists__25706B50FCD918B1AUFSCHIEBBARKEIT | 7

Sie können auch andere Argumente verwenden, wie den Tabelleneigentümer und den Tabellenqualifizierer:

EXEC sp_fkeys @pktable_name =Künstler, @pktable_owner =dbo, @pktable_qualifier =Musik, @fktable_name =Alben, @fktable_owner =dbo, @fktable_qualifier =Musik;

Beispiel 2 – Die Systemansicht REFERENTIAL_CONSTRAINTS

Die INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS Die Systemansicht gibt eine Zeile für jeden FOREIGN KEY zurück Einschränkung in der aktuellen Datenbank.

Dies ist ideal, um schnell eine Liste von Fremdschlüsseln in der Datenbank zusammen mit der zugehörigen eindeutigen Einschränkung zurückzugeben. Sie sind nicht wie im vorherigen Beispiel auf nur eine Tabelle beschränkt.

Hier ist ein Beispiel:

SELECT CONSTRAINT_NAME, UNIQUE_CONSTRAINT_NAMEFROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS;

Ergebnis:

+-------------------+--------------------- -----+| CONSTRAINT_NAME | UNIQUE_CONSTRAINT_NAME ||-------------------+-------------------------- ----|| FK_Alben_Künstler | PK__Künstler__25706B50FCD918B1 || FK_Alben_Genres | PK__Genres__0385057E88BB96F8 |+-------------------+-------------------------- ----+

In diesem Fall können wir also jeden Fremdschlüssel in der aktuellen Datenbank zusammen mit dem zugehörigen Primärschlüssel sehen.

Wie sich herausstellt, hat diese Datenbank nur zwei Fremdschlüssel und es sind dieselben, die wir im vorherigen Beispiel gesehen haben.

Hier ist ein Beispiel, das alle Daten für FK_Albums_Artists zurückgibt Fremdschlüssel:

SELECT *FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTSWHERE CONSTRAINT_NAME ='FK_Albums_Artists';

Ergebnis:

CONSTRAINT_CATALOG | MusikCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | FK_Alben_KünstlerUNIQUE_CONSTRAINT_CATALOG | MusikUNIQUE_CONSTRAINT_SCHEMA | dboUNIQUE_CONSTRAINT_NAME | PK__Künstler__25706B50FCD918B1MATCH_OPTION | SIMPLEUPDATE_RULE | KEINE AKTION DELETE_RULE | KEINE AKTION

Sie werden feststellen, dass diese Methode nicht die Primär- und Fremdschlüsseltabellendetails bereitstellt, die Sie mit der vorherigen Methode erhalten, sodass Sie einige Verknüpfungen mit anderen Ansichten vornehmen müssen, wenn Sie diese Informationen benötigen (oder eine der Methoden verwenden unten).

Beispiel 3 – Die Systemansicht KEY_COLUMN_USAGE

Der INFORMATION_SCHEMA.KEY_COLUMN_USAGE Die Systemansicht gibt eine Zeile für jede Spalte zurück, die als Schlüssel in der aktuellen Datenbank eingeschränkt ist.

SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAMEFROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE;

Ergebnis:

+--------------+---------------+--------------- ----------------+| TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME ||--------------+---------------+---------------- ---------------|| Alben | ArtistID | FK_Alben_Künstler || Alben | GenreID | FK_Alben_Genres || Alben | Album-ID | PK__Alben__97B4BE379FC780BD || Künstler | ArtistID | PK__Künstler__25706B50FCD918B1 || Genres | GenreID | PK__Genres__0385057E88BB96F8 |+--------------+---------------+---------------- ---------------+

Wir können sehen, dass dies alle Einschränkungen zurückgibt, einschließlich Primärschlüssel.

Wir können auch ein WHERE hinzufügen -Klausel, um die Ergebnisse auf eine bestimmte Tabelle einzugrenzen.

SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAMEFROM INFORMATION_SCHEMA.KEY_COLUMN_USAGEWHERE TABLE_NAME ='Alben';

Ergebnis:

+--------------+---------------+--------------- ---------------+| TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME ||--------------+---------------+---------------- --------------|| Alben | ArtistID | FK_Alben_Künstler || Alben | GenreID | FK_Alben_Genres || Alben | Album-ID | PK__Alben__97B4BE379FC780BD |+--------------+---------------+---------------- --------------+

In diesen Beispielen habe ich die Ergebnisse auf die Spalten der Ansicht beschränkt, die mich interessieren, aber Sie können auch das Sternchen (* ) Platzhalter, um alle Spalten zurückzugeben.

SELECT *FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGEWHERE TABLE_NAME ='Alben';

Ergebnis (bei vertikaler Ausgabe):

-[ RECORD 1 ]-------------------------CONSTRAINT_CATALOG | MusikCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | FK_Alben_KünstlerTABLE_CATALOG | MusikTABLE_SCHEMA | dboTABLE_NAME | AlbenCOLUMN_NAME | ArtistIdORDINAL_POSITION | 1-[ RECORD 2 ]-------------------------CONSTRAINT_CATALOG | MusikCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | FK_Alben_GenresTABLE_CATALOG | MusikTABLE_SCHEMA | dboTABLE_NAME | AlbenCOLUMN_NAME | GenreIdORDINAL_POSITION | 1-[ RECORD 3 ]-------------------------CONSTRAINT_CATALOG | MusikCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | PK__Alben__97B4BE379FC780BDTABLE_CATALOG | MusikTABLE_SCHEMA | dboTABLE_NAME | AlbenCOLUMN_NAME | AlbumIdORDINAL_POSITION | 1

Beispiel 4 – Die Systemansicht CONSTRAINT_COLUMN_USAGE

Dies ähnelt dem vorherigen Beispiel. Der INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE Die Systemansicht gibt eine Zeile für jede Spalte in der aktuellen Datenbank zurück, für die eine Einschränkung für die Spalte definiert ist.

Wie bei INFORMATION_SCHEMA.KEY_COLUMN_USAGE Mit dieser Ansicht erhalten Sie auch Primärschlüssel zurückgegeben. Jedoch INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ist nicht nur auf wichtige Einschränkungen beschränkt.

SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAMEFROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE;

Ergebnis:

+--------------+---------------+--------------- ----------------+| TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME ||--------------+---------------+---------------- ---------------|| Alben | ArtistID | FK_Alben_Künstler || Alben | GenreID | FK_Alben_Genres || Alben | Album-ID | PK__Alben__97B4BE379FC780BD || Künstler | ArtistID | PK__Künstler__25706B50FCD918B1 || Genres | GenreID | PK__Genres__0385057E88BB96F8 |+--------------+---------------+---------------- ---------------+

Sie können ein WHERE verwenden -Klausel, um nur eine bestimmte Tabelle oder Spalte zurückzugeben:

SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAMEFROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGEWHERE COLUMN_NAME ='ArtistId';

Ergebnis:

+--------------+---------------+--------------- ----------------+| TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME ||--------------+---------------+---------------- ---------------|| Alben | ArtistID | FK_Alben_Künstler || Künstler | ArtistID | PK__Künstler__25706B50FCD918B1 |+--------------+---------------+---------------- ---------------+

In diesem Fall habe ich einen Spaltennamen angegeben, sodass alle Einschränkungen für Spalten mit diesem Namen zurückgegeben wurden. Wie sich herausstellt, verwendet die Datenbank denselben Spaltennamen in zwei verschiedenen Tabellen. Einer hat eine Fremdschlüsseleinschränkung, der andere einen Primärschlüssel. Daher werden beide Zeilen zurückgegeben.

Auch hier können Sie das Sternchen (* ) Platzhalter, um alle Spalten zurückzugeben.

Hier ist ein Beispiel, in dem ich alle Daten für eine bestimmte Tabelle zurückgebe:

SELECT *FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGEWHERE TABLE_NAME ='Alben';

Ergebnis (bei vertikaler Ausgabe):

-[ RECORD 1 ]-------------------------TABLE_CATALOG | MusikTABLE_SCHEMA | dboTABLE_NAME | AlbenCOLUMN_NAME | ArtistIdCONSTRAINT_CATALOG | MusikCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | FK_Alben_Künstler-[ RECORD 2 ]-------------------------TABLE_CATALOG | MusikTABLE_SCHEMA | dboTABLE_NAME | AlbenCOLUMN_NAME | GenreIdCONSTRAINT_CATALOG | MusikCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | FK_Albums_Genres-[ RECORD 3 ]-------------------------TABLE_CATALOG | MusikTABLE_SCHEMA | dboTABLE_NAME | AlbenCOLUMN_NAME | AlbumIdCONSTRAINT_CATALOG | MusikCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | PK__Alben__97B4BE379FC780BD

Beispiel 5 – Die Systemansicht CONSTRAINT_TABLE_USAGE

Der INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE Die Systemansicht gibt eine Zeile für jede Tabelle in der aktuellen Datenbank zurück, für die eine Einschränkung für die Tabelle definiert ist.

SELECT TABLE_NAME, CONSTRAINT_NAME FROM INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE;

Ergebnis:

+--------------+------------------------------- +| TABLE_NAME | CONSTRAINT_NAME ||--------------+-------------------------------| | Künstler | PK__Künstler__25706B50FCD918B1 || Genres | PK__Genres__0385057E88BB96F8 || Alben | PK__Alben__97B4BE379FC780BD || Alben | FK_Alben_Künstler || Alben | FK_Albums_Genres |+--------------+------------------------------+ 

Diese Ansicht gibt nicht die Spaltennamen zurück, für die die Einschränkungen verwendet werden, daher ist sie je nach Ihren Anforderungen möglicherweise nicht so nützlich für Sie.

Hier ist ein Beispiel, das alle Daten zeigt, die von dieser Ansicht für die Alben zurückgegeben werden Tabelle:

SELECT * FROM INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGEWHERE TABLE_NAME ='Alben';

Ergebnis:

-[ RECORD 1 ]-------------------------TABLE_CATALOG | MusikTABLE_SCHEMA | dboTABLE_NAME | AlbenCONSTRAINT_CATALOG | MusikCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | PK__Alben__97B4BE379FC780BD-[AUFNAHME 2]-------------------------TABLE_CATALOG | MusikTABLE_SCHEMA | dboTABLE_NAME | AlbenCONSTRAINT_CATALOG | MusikCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | FK_Alben_Künstler-[ RECORD 3 ]-------------------------TABLE_CATALOG | MusikTABLE_SCHEMA | dboTABLE_NAME | AlbenCONSTRAINT_CATALOG | MusikCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | FK_Albums_Genres

Beispiel 6 – Die TABLE_CONSTRAINTS-Systemansicht

Der INFORMATION_SCHEMA.TABLE_CONSTRAINTS Die Systemansicht gibt eine Zeile für jede Tabelleneinschränkung in der aktuellen Datenbank zurück.

SELECT TABLE_NAME, CONSTRAINT_NAME, CONSTRAINT_TYPEFROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS;

Ergebnis:

+--------------+------------------------------- +-------------------+| TABLE_NAME | CONSTRAINT_NAME | CONSTRAINT_TYPE ||--------------+------------------------------+ -------------------|| Künstler | PK__Künstler__25706B50FCD918B1 | PRIMÄRSCHLÜSSEL || Genres | PK__Genres__0385057E88BB96F8 | PRIMÄRSCHLÜSSEL || Alben | PK__Alben__97B4BE379FC780BD | PRIMÄRSCHLÜSSEL || Alben | FK_Alben_Künstler | FREMDSCHLÜSSEL || Alben | FK_Alben_Genres | FREMDSCHLÜSSEL |+--------------+------------------------------- +-------------------------------+

Diese Ansicht stellt nicht den Spaltennamen, aber den Einschränkungstyp bereit. Daher können Sie die Ergebnisse auf nur Fremdschlüssel einschränken:

SELECT TABLE_NAME, CONSTRAINT_NAME, CONSTRAINT_TYPEFROM INFORMATION_SCHEMA.TABLE_CONSTRAINTSWHERE CONSTRAINT_TYPE ='FOREIGN KEY';

Ergebnis:

+--------------+--------------+----------- --------+| TABLE_NAME | CONSTRAINT_NAME | CONSTRAINT_TYPE ||--------------+--------------+------------ -------|| Alben | FK_Alben_Künstler | FREMDSCHLÜSSEL || Alben | FK_Alben_Genres | FREMDSCHLÜSSEL |+--------------+--------------+----------- --------+

Hier ist ein Beispiel, das einen Platzhalter verwendet (* ) Zeichen, um alle Daten für die auf die Alben angewendeten Fremdschlüsseleinschränkungen zurückzugeben Tabelle:

SELECT *FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTSWHERE TABLE_NAME ='Albums'AND CONSTRAINT_TYPE ='FOREIGN KEY';

Ergebnis:

-[ RECORD 1 ]-------------------------CONSTRAINT_CATALOG | MusikCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | FK_Alben_KünstlerTABLE_CATALOG | MusikTABLE_SCHEMA | dboTABLE_NAME | AlbenCONSTRAINT_TYPE | FOREIGN KEYIS_DEFERRABLE | NOINITIALLY_DEFERRED | NO-[ RECORD 2 ]-------------------------CONSTRAINT_CATALOG | MusikCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | FK_Alben_GenresTABLE_CATALOG | MusikTABLE_SCHEMA | dboTABLE_NAME | AlbenCONSTRAINT_TYPE | FOREIGN KEYIS_DEFERRABLE | NOINITIALLY_DEFERRED | NEIN

Beispiel 7 – Die Systemansicht sys.foreign_keys

Die sys.foreign_keys Die Systemansicht enthält eine Zeile pro Objekt, die ein FOREIGN KEY ist Beschränkung, mit sys.object.type = F („F“ steht für „Fremdschlüssel“).

Beispiel:

SELECT name AS 'Constraint', OBJECT_NAME(parent_object_id) AS 'Table', OBJECT_NAME(referenced_object_id) AS 'Referenced Column'FROM sys.foreign_keys;

Ergebnis:

+-------------------+---------+---------------- -----+| Einschränkung | Tabelle | Referenzierte Spalte ||-------------------+---------+---------------- -----|| FK_Alben_Künstler | Alben | Künstler || FK_Alben_Genres | Alben | Genres |+-------------------+---------+---------------- ----+

Hier ist es, wenn alle Daten für die FK_Albums_Artists zurückgegeben werden Fremdschlüssel:

SELECT * FROM sys.foreign_keysWHERE name ='FK_Albums_Artists';

Ergebnis:

| FK_Albums_Artistsobject_id | 981578535Prinzipal_ID | NULLschema_id | 1parent_object_id | 949578421Typ | F type_desc | FOREIGN_KEY_CONSTRAINTcreate_date | 2019-05-02 12:56:06.380modify_date | 2019-05-02 12:56:06.380is_ms_shipped | 0ist_veröffentlicht | 0is_schema_published | 0referenzierte_Objekt_ID | 885578193key_index_id | 1ist_deaktiviert | 0is_not_for_replication | 0ist_nicht_vertrauenswürdig | 0delete_referential_action | 0delete_referential_action_desc | NO_ACTIONupdate_referential_action | 0update_referential_action_desc | NO_ACTIONist_system_benannt | 0

Beispiel 8 – Die Systemansicht sys.foreign_key_columns

Die sys.foreign_key_columns Systemansicht enthält eine Zeile für jede Spalte oder jede Gruppe von Spalten, die einen Fremdschlüssel enthalten.

Beispiel:

SELECT OBJECT_NAME(constraint_object_id) AS 'Foreign Key', OBJECT_NAME(parent_object_id) AS 'Table', OBJECT_NAME(referenced_object_id) AS 'Referenced Table'FROM sys.foreign_key_columns;

Ergebnis:

+--------------------+---------+--------------- -----+| Fremdschlüssel | Tabelle | Referenzierte Tabelle ||--------------------+---------+--------------- -----|| FK_Alben_Künstler | Alben | Künstler || FK_Alben_Genres | Alben | Genres || FK_Künstler_Land | Künstler | Land |+--------------------+---------+---------------- ----+

Und hier ist es, wenn alle Daten für die FK_Albums_Artists zurückgegeben werden Fremdschlüssel:

SELECT * FROM sys.foreign_key_columnsWHERE OBJECT_NAME(constraint_object_id) ='FK_Albums_Artists';

Ergebnis:

constraint_object_id | 981578535constraint_column_id | 1parent_object_id | 949578421parent_column_id | 4referenzierte_Objekt_ID | 885578193referenced_column_id | 1

Beispiel 9 – Die sys.objects-Systemansicht

Die sys.objects Die Systemansicht enthält eine Zeile für jedes benutzerdefinierte Objekt im Schemabereich, das in einer Datenbank erstellt wird. Es enthält also Informationen über unsere Fremdschlüssel.

Beispiel:

SELECT OBJECT_NAME(parent_object_id) AS 'Table', nameFROM sys.objects WHERE type ='F';

Ergebnis:

+---------+-------------------+| Tabelle | Name ||---------+------------------|| Alben | FK_Alben_Künstler || Alben | FK_Albums_Genres |+---------+-------------------+

In diesem Beispiel habe ich die Ergebnisse auf Fremdschlüssel eingegrenzt (geben Sie F ein ).

Hier ist ein Beispiel, das alle Daten für FK_Albums_Artists zurückgibt Fremdschlüssel:

SELECT *FROM sys.objectsWHERE name ='FK_Albums_Artists';

Ergebnis (bei vertikaler Ausgabe):

-[ RECORD 1 ]--------------------Name | FK_Albums_Artistsobject_id | 981578535Prinzipal_ID | NULLschema_id | 1parent_object_id | 949578421typ | F type_desc | FOREIGN_KEY_CONSTRAINTcreate_date | 2019-05-02 12:56:06.380modify_date | 2019-05-02 12:56:06.380is_ms_shipped | 0ist_veröffentlicht | 0is_schema_published | 0

Beispiel 10 – Die gespeicherte Systemprozedur sp_helpconstraint

Die sp_helpconstraint Die gespeicherte Systemprozedur gibt eine Liste aller Einschränkungstypen zurück, ihre benutzerdefinierten oder vom System bereitgestellten Namen, die Spalten, für die sie definiert wurden, und den Ausdruck, der die Einschränkung definiert (für DEFAULT und CHECK Einschränkungen).

Daher können Sie damit Informationen zu Fremdschlüsseln in Ihrer Datenbank zurückgeben.

Beispiel:

EXEC sp_helpconstraint Alben;

Ergebnis:

+---------------+| Objektname ||---------------|| Alben |+---------------+ -[ RECORD 1 ]--------------------constraint_type | FOREIGN KEYconstraint_name | FK_Albums_Artistsdelete_action | Keine Aktionupdate_action | Nein Actionstatus_enabled | Enabledstatus_for_replication | Is_For_Replicationconstraint_keys | ArtistId-[ RECORD 2 ]--------------------constraint_type | Beschränkungsname | delete_action | update_action | status_aktiviert | status_for_replication | Einschränkungsschlüssel | REFERENZEN Music.dbo.Artists (ArtistId)-[ RECORD 3 ]-------------------------constraint_type | FOREIGN KEYconstraint_name | FK_Albums_Genresdelete_action | Keine Aktionupdate_action | Nein Actionstatus_enabled | Enabledstatus_for_replication | Is_For_Replicationconstraint_keys | GenreId-[ RECORD 4 ]--------------------constraint_type | Beschränkungsname | delete_action | update_action | status_aktiviert | status_for_replication | Einschränkungsschlüssel | REFERENZEN Music.dbo.Genres (GenreId)-[ RECORD 5 ]--------------------constraint_type | PRIMARY KEY (clustered)constraint_name | PK__Alben__97B4BE379FC780BDdelete_action | (n/a)update_action | (n/a)status_aktiviert | (n/a)status_for_replication | (n/a)constraint_keys | AlbumId

Beispiel 11 – Die gespeicherte Systemprozedur sp_help

Die sp_help gespeicherte Systemprozedur meldet Informationen über ein Datenbankobjekt (jedes Objekt, das in sys.sysobjects aufgeführt ist Kompatibilitätsansicht), einen benutzerdefinierten Datentyp oder einen Datentyp. Dazu gehören Informationen über Fremdschlüssel.

Wenn Sie dies ohne Argumente ausführen, werden Informationen zu zusammenfassenden Informationen von Objekten aller Typen zurückgegeben, die in der aktuellen Datenbank vorhanden sind (d. h. ein lot von Informationen).

Sie können jedoch den Namen einer Tabelle angeben, und es werden Informationen zu dieser Tabelle zurückgegeben. Auch hier erhalten Sie eine Menge Informationen zurück, darunter jedoch Fremdschlüsselinformationen.

Beispiel:

EXEC sp_help Alben;

Ergebnis:

+--------+---------+------------+-------------- -----------+| Name | Besitzer | Geben Sie | ein Created_datetime ||--------+---------+------------+--------------- ----------|| Alben | dbo | Benutzertabelle | 2019-05-02 12:56:06.370 |+--------+---------+------------+------ -------------------+ -[ AUFNAHME 1 ]-------------------- Spaltenname | AlbumIdType | intberechnet | keineLänge | 4Prec | 10 Maßstab | 0 Nullable | noTrimTrailingBlanks | (n/a)FixedLenNullInSource | (n/a)Sammlung | NULL-[ RECORD 2 ]-------------------------Column_name | AlbumNameTyp | nvarcharberechnet | keineLänge | 510Prec | Maßstab | Nullable | noTrimTrailingBlanks | (n/a)FixedLenNullInSource | (n/a)Sammlung | SQL_Latin1_General_CP1_CI_AS-[ RECORD 3 ]------------------------------Column_name | ReleaseDateType | Datumberechnet | keineLänge | 3Prec | 10 Maßstab | 0 Nullable | noTrimTrailingBlanks | (n/a)FixedLenNullInSource | (n/a)Sammlung | NULL-[ RECORD 4 ]--------------------Column_name | ArtistIdType | intberechnet | keineLänge | 4Prec | 10 Maßstab | 0 Nullable | noTrimTrailingBlanks | (n/a)FixedLenNullInSource | (n/a)Sammlung | NULL-[ RECORD 5 ]--------------------Column_name | GenreIdType | intberechnet | keineLänge | 4Prec | 10 Maßstab | 0 Nullable | noTrimTrailingBlanks | (n/a)FixedLenNullInSource | (n/a)Sammlung | NULL +-----------+--------+------------+------------ -----------+| Identität | Samen | Inkrement | Nicht zur Replikation ||------------+--------+-------------+--------- --------------|| Album-ID | 1 | 1 | 0 |+-----------+--------+------------+----------- -------------+ +-------------------------------+| RowGuidCol ||-------------------------------|| Keine rowguidcol-Spalte definiert. |+------------------------------+ +--------------- --------------+| Data_located_on_filegroup ||------------------------------------|| PRIMÄR |+-------------------------------------+ +---------------- --------------+----------------------------------- -----------+--------------+| Indexname | index_beschreibung | index_keys ||------------------------------+---------------- -----------------------------------+-------------- || PK__Alben__97B4BE379FC780BD | geclusterter, eindeutiger Primärschlüssel, der sich auf PRIMARY | befindet AlbumId |+------------------------------+---------------- -----------------------------------+-------------- + -[ RECORD 1 ]--------------------constraint_type | FOREIGN KEYconstraint_name | FK_Albums_Artistsdelete_action | Keine Aktionupdate_action | Nein Actionstatus_enabled | Enabledstatus_for_replication | Is_For_Replicationconstraint_keys | ArtistId-[ RECORD 2 ]--------------------constraint_type | Beschränkungsname | delete_action | update_action | status_aktiviert | status_for_replication | Einschränkungsschlüssel | REFERENZEN Music.dbo.Artists (ArtistId)-[ RECORD 3 ]-------------------------constraint_type | FOREIGN KEYconstraint_name | FK_Albums_Genresdelete_action | Keine Aktionupdate_action | Nein Actionstatus_enabled | Enabledstatus_for_replication | Is_For_Replicationconstraint_keys | GenreId-[ RECORD 4 ]--------------------constraint_type | Beschränkungsname | delete_action | update_action | status_aktiviert | status_for_replication | Einschränkungsschlüssel | REFERENZEN Music.dbo.Genres (GenreId)-[ RECORD 5 ]--------------------constraint_type | PRIMARY KEY (clustered)constraint_name | PK__Alben__97B4BE379FC780BDdelete_action | (n/a)update_action | (n/a)status_aktiviert | (n/a)status_for_replication | (n/a)constraint_keys | AlbumId