W SQL Server możesz użyć sp_primarykeys
systemowa procedura składowana w celu zwrócenia kolumn klucza podstawowego z określonego serwera połączonego. Zwraca jeden wiersz na kolumnę klucza, dla określonej tabeli zdalnej.
Najprostszym sposobem wykonania tej procedury składowanej jest przekazanie nazwy serwera połączonego. Spowoduje to zwrócenie wszystkich kluczy podstawowych z domyślnej bazy danych na określonym serwerze połączonym.
Masz również możliwość określenia innej bazy danych i/lub określonego schematu tabeli.
Składnia
Składnia wygląda tak:
sp_primarykeys [ @table_server = ] 'table_server' [ , [ @table_name = ] 'table_name' ] [ , [ @table_schema = ] 'table_schema' ] [ , [ @table_catalog = ] 'table_catalog' ]
@table_server
argument jest jedynym wymaganym argumentem. Jest to nazwa połączonego serwera, z którego chcesz uzyskać informacje o kluczu podstawowym.
Pozostałe argumenty są opcjonalne.
Przykład 1 – Zwróć wszystkie klucze podstawowe w domyślnej bazie danych
Poniższy przykład zwraca wszystkie klucze podstawowe z domyślnej bazy danych na połączonym serwerze o nazwie Homer.
EXEC sp_primarykeys @table_server = 'Homer';
Można go również uruchomić w ten sposób:
EXEC sp_primarykeys 'Homer';
Wynik:
+-------------+---------------+--------------+---------------+-----------+-----------+ | TABLE_CAT | TABLE_SCHEM | TABLE_NAME | COLUMN_NAME | KEY_SEQ | PK_NAME | |-------------+---------------+--------------+---------------+-----------+-----------| | Music | dbo | Albums | AlbumId | 1 | NULL | | Music | dbo | Artists | ArtistId | 1 | NULL | | Music | dbo | Country | CountryId | 1 | NULL | | Music | dbo | Genres | GenreId | 1 | NULL | +-------------+---------------+--------------+---------------+-----------+-----------+
W tym przypadku są cztery kolumny klucza podstawowego (są one wymienione w COLUMN_NAME
). Zauważysz, że PK_NAME
kolumna ma wartość NULL
. Ta kolumna dotyczy identyfikatora klucza podstawowego. Microsoft twierdzi, że zwraca to NULL, jeśli nie dotyczy źródła danych.
KEY_SEQ
kolumna to numer kolejny kolumny w wielokolumnowym kluczu podstawowym. W tym przypadku nie było wielokolumnowych kluczy podstawowych, więc wartość to 1
dla każdego klucza podstawowego. Następny przykład zwraca niektóre wyniki z wielokolumnowymi kluczami podstawowymi.
Przykład 2 – Określ inną bazę danych
Poniższy przykład określa, że WideWorldImportersDW
należy użyć bazy danych.
EXEC sp_primarykeys @table_server = 'Homer', @table_catalog = 'WideWorldImportersDW';
Wynik:
+----------------------+---------------+-------------------------+------------------------------+-----------+-----------+ | TABLE_CAT | TABLE_SCHEM | TABLE_NAME | COLUMN_NAME | KEY_SEQ | PK_NAME | |----------------------+---------------+-------------------------+------------------------------+-----------+-----------| | WideWorldImportersDW | Dimension | City | City Key | 1 | NULL | | WideWorldImportersDW | Dimension | Customer | Customer Key | 1 | NULL | | WideWorldImportersDW | Dimension | Date | Date | 1 | NULL | | WideWorldImportersDW | Dimension | Employee | Employee Key | 1 | NULL | | WideWorldImportersDW | Dimension | Payment Method | Payment Method Key | 1 | NULL | | WideWorldImportersDW | Dimension | Stock Item | Stock Item Key | 1 | NULL | | WideWorldImportersDW | Dimension | Supplier | Supplier Key | 1 | NULL | | WideWorldImportersDW | Dimension | Transaction Type | Transaction Type Key | 1 | NULL | | WideWorldImportersDW | Fact | Movement | Movement Key | 1 | NULL | | WideWorldImportersDW | Fact | Movement | Date Key | 2 | NULL | | WideWorldImportersDW | Fact | Order | Order Key | 1 | NULL | | WideWorldImportersDW | Fact | Order | Order Date Key | 2 | NULL | | WideWorldImportersDW | Fact | Purchase | Purchase Key | 1 | NULL | | WideWorldImportersDW | Fact | Purchase | Date Key | 2 | NULL | | WideWorldImportersDW | Fact | Sale | Sale Key | 1 | NULL | | WideWorldImportersDW | Fact | Sale | Invoice Date Key | 2 | NULL | | WideWorldImportersDW | Fact | Stock Holding | Stock Holding Key | 1 | NULL | | WideWorldImportersDW | Fact | Transaction | Transaction Key | 1 | NULL | | WideWorldImportersDW | Fact | Transaction | Date Key | 2 | NULL | | WideWorldImportersDW | Integration | City_Staging | City Staging Key | 1 | NULL | | WideWorldImportersDW | Integration | Customer_Staging | Customer Staging Key | 1 | NULL | | WideWorldImportersDW | Integration | Employee_Staging | Employee Staging Key | 1 | NULL | | WideWorldImportersDW | Integration | ETL Cutoff | Table Name | 1 | NULL | | WideWorldImportersDW | Integration | Lineage | Lineage Key | 1 | NULL | | WideWorldImportersDW | Integration | Movement_Staging | Movement Staging Key | 1 | NULL | | WideWorldImportersDW | Integration | Order_Staging | Order Staging Key | 1 | NULL | | WideWorldImportersDW | Integration | PaymentMethod_Staging | Payment Method Staging Key | 1 | NULL | | WideWorldImportersDW | Integration | Purchase_Staging | Purchase Staging Key | 1 | NULL | | WideWorldImportersDW | Integration | Sale_Staging | Sale Staging Key | 1 | NULL | | WideWorldImportersDW | Integration | StockHolding_Staging | Stock Holding Staging Key | 1 | NULL | | WideWorldImportersDW | Integration | StockItem_Staging | Stock Item Staging Key | 1 | NULL | | WideWorldImportersDW | Integration | Supplier_Staging | Supplier Staging Key | 1 | NULL | | WideWorldImportersDW | Integration | Transaction_Staging | Transaction Staging Key | 1 | NULL | | WideWorldImportersDW | Integration | TransactionType_Staging | Transaction Type Staging Key | 1 | NULL | +----------------------+---------------+-------------------------+------------------------------+-----------+-----------+
Przykład 3 – Określ schemat tabeli
Poniższy przykład zawęża wyniki do określonego schematu tabeli.
EXEC sp_primarykeys @table_server = 'Homer', @table_schema = 'Fact', @table_catalog = 'WideWorldImportersDW';
Wyniki:
+----------------------+---------------+---------------+-------------------+-----------+-----------+ | TABLE_CAT | TABLE_SCHEM | TABLE_NAME | COLUMN_NAME | KEY_SEQ | PK_NAME | |----------------------+---------------+---------------+-------------------+-----------+-----------| | WideWorldImportersDW | Fact | Movement | Movement Key | 1 | NULL | | WideWorldImportersDW | Fact | Movement | Date Key | 2 | NULL | | WideWorldImportersDW | Fact | Order | Order Key | 1 | NULL | | WideWorldImportersDW | Fact | Order | Order Date Key | 2 | NULL | | WideWorldImportersDW | Fact | Purchase | Purchase Key | 1 | NULL | | WideWorldImportersDW | Fact | Purchase | Date Key | 2 | NULL | | WideWorldImportersDW | Fact | Sale | Sale Key | 1 | NULL | | WideWorldImportersDW | Fact | Sale | Invoice Date Key | 2 | NULL | | WideWorldImportersDW | Fact | Stock Holding | Stock Holding Key | 1 | NULL | | WideWorldImportersDW | Fact | Transaction | Transaction Key | 1 | NULL | | WideWorldImportersDW | Fact | Transaction | Date Key | 2 | NULL | +----------------------+---------------+---------------+-------------------+-----------+-----------+