In SQL Server können Sie den sp_columns_ex
verwenden gespeicherte Systemprozedur, um Spalteninformationen zu den Spalten von einem angegebenen Verbindungsserver zurückzugeben.
Sie können eine einzelne Spalte oder alle Spalten einer bestimmten Datenbank, Tabelle usw. angeben.
Syntax
Die Syntax lautet wie folgt:
sp_columns_ex [ @table_server = ] 'table_server' [ , [ @table_name = ] 'table_name' ] [ , [ @table_schema = ] 'table_schema' ] [ , [ @table_catalog = ] 'table_catalog' ] [ , [ @column_name = ] 'column' ] [ , [ @ODBCVer = ] 'ODBCVer' ]
Der @table_server
Argument ist das einzige erforderliche Argument. Dies ist der Name des Verbindungsservers, von dem Sie die Tabelleninformationen erhalten möchten.
Die anderen Argumente sind optional, und ich behandle die meisten davon in den folgenden Beispielen. Weitere Informationen zu diesen Argumenten finden Sie in der Microsoft-Dokumentation.
Beispiel 1 – Gibt eine bestimmte Spalte zurück
Das folgende Beispiel gibt Informationen zu einer bestimmten Spalte zurück.
EXEC sp_columns_ex @table_server = 'Homer', @table_name = 'Artists', @table_schema = 'dbo', @table_catalog = 'Music', @column_name = 'ArtistName';
Ergebnis (bei vertikaler Ausgabe):
TABLE_CAT | Music TABLE_SCHEM | dbo TABLE_NAME | Artists COLUMN_NAME | ArtistName DATA_TYPE | -9 TYPE_NAME | nvarchar COLUMN_SIZE | 255 BUFFER_LENGTH | 510 DECIMAL_DIGITS | NULL NUM_PREC_RADIX | NULL NULLABLE | 0 REMARKS | NULL COLUMN_DEF | NULL SQL_DATA_TYPE | -9 SQL_DATETIME_SUB | NULL CHAR_OCTET_LENGTH | 510 ORDINAL_POSITION | 2 IS_NULLABLE | NO SS_DATA_TYPE | 39
In diesem Fall lautet der Servername Homer
, der Datenbankname ist Music
, lautet der Tabellenname Artists
, das Tabellenschema ist dbo
und der Spaltenname ist ArtistName
.
Dies könnte auch so geschehen:
EXEC sp_columns_ex 'Homer', 'Artists', 'dbo', 'Music', 'ArtistName';
Beispiel 2 – Geben Sie nur eine Tabelle an
In diesem Beispiel gebe ich nur den Tabellennamen an.
EXEC sp_columns_ex @table_server = 'Homer', @table_name = 'Artists';
Dies gibt Informationen über alle Spalten in den Künstlern zurück Tisch.
Beispiel 3 – Geben Sie den Datenbank- und Spaltennamen an
In diesem Beispiel gebe ich die Datenbank und die Spalte an, aber nicht die Tabelle.
EXEC sp_columns_ex @table_server = 'Homer', @table_catalog = 'Music', @column_name = 'ArtistName';
Ergebnisse (mit vertikaler Ausgabe):
-[ RECORD 1 ]------------------------- TABLE_CAT | Music TABLE_SCHEM | dbo TABLE_NAME | Artists COLUMN_NAME | ArtistName DATA_TYPE | -9 TYPE_NAME | nvarchar COLUMN_SIZE | 255 BUFFER_LENGTH | 510 DECIMAL_DIGITS | NULL NUM_PREC_RADIX | NULL NULLABLE | 0 REMARKS | NULL COLUMN_DEF | NULL SQL_DATA_TYPE | -9 SQL_DATETIME_SUB | NULL CHAR_OCTET_LENGTH | 510 ORDINAL_POSITION | 2 IS_NULLABLE | NO SS_DATA_TYPE | 39 -[ RECORD 2 ]------------------------- TABLE_CAT | Music TABLE_SCHEM | dbo TABLE_NAME | BluesAlbums COLUMN_NAME | ArtistName DATA_TYPE | -9 TYPE_NAME | nvarchar COLUMN_SIZE | 255 BUFFER_LENGTH | 510 DECIMAL_DIGITS | NULL NUM_PREC_RADIX | NULL NULLABLE | 0 REMARKS | NULL COLUMN_DEF | NULL SQL_DATA_TYPE | -9 SQL_DATETIME_SUB | NULL CHAR_OCTET_LENGTH | 510 ORDINAL_POSITION | 2 IS_NULLABLE | NO SS_DATA_TYPE | 39 -[ RECORD 3 ]------------------------- TABLE_CAT | Music TABLE_SCHEM | dbo TABLE_NAME | JazzAlbums COLUMN_NAME | ArtistName DATA_TYPE | -9 TYPE_NAME | nvarchar COLUMN_SIZE | 255 BUFFER_LENGTH | 510 DECIMAL_DIGITS | NULL NUM_PREC_RADIX | NULL NULLABLE | 0 REMARKS | NULL COLUMN_DEF | NULL SQL_DATA_TYPE | -9 SQL_DATETIME_SUB | NULL CHAR_OCTET_LENGTH | 510 ORDINAL_POSITION | 2 IS_NULLABLE | NO SS_DATA_TYPE | 39 -[ RECORD 4 ]------------------------- TABLE_CAT | Music TABLE_SCHEM | dbo TABLE_NAME | RockAlbums COLUMN_NAME | ArtistName DATA_TYPE | -9 TYPE_NAME | nvarchar COLUMN_SIZE | 255 BUFFER_LENGTH | 510 DECIMAL_DIGITS | NULL NUM_PREC_RADIX | NULL NULLABLE | 0 REMARKS | NULL COLUMN_DEF | NULL SQL_DATA_TYPE | -9 SQL_DATETIME_SUB | NULL CHAR_OCTET_LENGTH | 510 ORDINAL_POSITION | 2 IS_NULLABLE | NO SS_DATA_TYPE | 39
Dadurch wurden drei weitere Spalten zurückgegeben. Diese stammen zufällig aus drei verschiedenen Ansichten (die Datenbank hat drei Ansichten mit einem ArtistName
Spalte:BluesAlbums
, JazzAlbums
, und RockAlbums
).
Beispiel 4 – Geben Sie nur eine Datenbank an
Hier gebe ich nur die Datenbank an:
EXEC sp_columns_ex @table_server = 'Homer', @table_catalog = 'Music';
Ich werde die Ergebnisse hier nicht anzeigen, da fast 6.000 Zeilen zurückgegeben wurden. Die meisten davon stammten von sys
Tabellenschema.
Beispiel 5 – Geben Sie ein Tabellenschema an
Das folgende Beispiel beschränkt die Ergebnisse auf ein bestimmtes Tabellenschema (dbo
).
EXEC sp_columns_ex @table_server = 'Homer', @table_schema = 'dbo';
Dadurch wurde eine viel kleinere Ergebnismenge als im vorherigen Beispiel zurückgegeben. Es ist immer noch ziemlich groß, also werde ich es hier nicht anzeigen.
Beispiel 6 – Platzhalterzeichen
Sie können auch Platzhalterzeichen verwenden. Hier ist ein Beispiel für die Verwendung von %
Platzhalterzeichen:
EXEC sp_columns_ex @table_server = 'Homer', @table_schema = 'dbo', @table_catalog = 'Music', @column_name = 'Ar%';
Dies gibt alle Spalten zurück, die mit Ar
beginnen . In meinem Fall wurden zwei
ArtistId
zurückgegeben Spalten und vier
ArtistName
Spalten.
Ich könnte das eingrenzen:
EXEC sp_columns_ex @table_server = 'Homer', @table_schema = 'dbo', @table_catalog = 'Music', @column_name = 'Ar%Name';
Dies gab nur den ArtistName zurück Spalten.
Wenn ich jedoch das r
entferne :
EXEC sp_columns_ex @table_server = 'Homer', @table_schema = 'dbo', @table_catalog = 'Music', @column_name = 'A%Name';
Ich bekomme jetzt vier zusätzliche Spalten namens AlbumName (sowie der ArtistName Spalten).