Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर में प्राथमिक कुंजी प्राप्त करने के 11 तरीके (T-SQL उदाहरण)

SQL सर्वर में समान (या समान) कार्य करने के लिए अक्सर कई तरीके होते हैं। डेटाबेस से सभी प्राथमिक कुंजियों को पुनर्प्राप्त करना (या किसी तालिका के लिए केवल प्राथमिक कुंजी भी) एक महत्वपूर्ण मामला है।

यह आलेख SQL सर्वर में प्राथमिक कुंजी जानकारी प्राप्त करने के लिए ग्यारह विभिन्न दृष्टिकोण प्रस्तुत करता है।

इनमें से कुछ आपकी सटीक स्थिति के आधार पर दूसरों की तुलना में अधिक उपयोगी होंगे।

उदाहरण 1 - sp_pkeys सिस्टम संग्रहित प्रक्रिया

यदि आप किसी दी गई तालिका के लिए प्राथमिक कुंजी चाहते हैं, तो sp_pkeys सिस्टम संग्रहीत प्रक्रिया शायद इसे करने का सबसे तेज़ और आसान तरीका है। ऐसा करने के लिए, बस तालिका नाम को प्रक्रिया में पास करें।

इस तरह:

EXEC sp_pkeys Artists;

परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):

TABLE_QUALIFIER | Music
TABLE_OWNER     | dbo
TABLE_NAME      | Artists
COLUMN_NAME     | ArtistId
KEY_SEQ         | 1
PK_NAME         | PK__Artists__25706B50FCD918B1

इस मामले में मैंने कलाकारों . से प्राथमिक कुंजी का अनुरोध किया है टेबल। यह प्राथमिक कुंजी नाम देता है ( PK__Artists__25706B50FCD918B1 ), डेटाबेस का नाम ( संगीत ), टेबल का नाम, कॉलम का नाम ( ArtistId ), साथ ही अन्य जानकारी।

वैकल्पिक रूप से, मैं समान परिणाम प्राप्त करने के लिए सभी तर्कों को स्पष्ट रूप से निर्दिष्ट कर सकता था:

EXEC sp_pkeys 
  @table_name = Artists,
  @table_owner = dbo,
  @table_qualifier = Music;

उदाहरण 2 - KEY_COLUMN_USAGE सिस्टम दृश्य

INFORMATION_SCHEMA.KEY_COLUMN_USAGE सिस्टम व्यू प्रत्येक कॉलम के लिए एक पंक्ति देता है जो वर्तमान डेटाबेस में एक कुंजी के रूप में विवश है। इसलिए आपको इस दृश्य के साथ विदेशी चाबियां भी वापस मिल जाएंगी।

SELECT 
  TABLE_NAME, 
  COLUMN_NAME,
  CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE;

परिणाम:

+--------------+---------------+-------------------------------+
| TABLE_NAME   | COLUMN_NAME   | CONSTRAINT_NAME               |
|--------------+---------------+-------------------------------|
| Albums       | ArtistId      | FK_Albums_Artists             |
| Albums       | GenreId       | FK_Albums_Genres              |
| Albums       | AlbumId       | PK__Albums__97B4BE379FC780BD  |
| Artists      | ArtistId      | PK__Artists__25706B50FCD918B1 |
| Genres       | GenreId       | PK__Genres__0385057E88BB96F8  |
+--------------+---------------+-------------------------------+

हम देख सकते हैं कि यह रिटर्न सभी तालिकाओं से बाधित है। हम एक WHERE भी जोड़ सकते हैं परिणामों को एक विशिष्ट तालिका में सीमित करने के लिए खंड।

SELECT 
  TABLE_NAME,
  COLUMN_NAME,
  CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME = 'Artists';

परिणाम:

+--------------+---------------+-------------------------------+
| TABLE_NAME   | COLUMN_NAME   | CONSTRAINT_NAME               |
|--------------+---------------+-------------------------------|
| Artists      | ArtistId      | PK__Artists__25706B50FCD918B1 |
+--------------+---------------+-------------------------------+

इन उदाहरणों में, मैंने परिणामों को उस दृश्य के केवल उन स्तंभों तक सीमित कर दिया है जिनमें मेरी रुचि है, लेकिन आप तारांकन (*) का भी उपयोग कर सकते हैं ) वाइल्डकार्ड सभी कॉलम लौटाने के लिए।

SELECT *
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME = 'Artists';

परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):

CONSTRAINT_CATALOG | Music
CONSTRAINT_SCHEMA  | dbo
CONSTRAINT_NAME    | PK__Artists__25706B50FCD918B1
TABLE_CATALOG      | Music
TABLE_SCHEMA       | dbo
TABLE_NAME         | Artists
COLUMN_NAME        | ArtistId
ORDINAL_POSITION   | 1

उदाहरण 3 - CONSTRAINT_COLUMN_USAGE सिस्टम दृश्य

यह पिछले उदाहरण के समान है। INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE सिस्टम व्यू वर्तमान डेटाबेस में प्रत्येक कॉलम के लिए एक पंक्ति देता है जिसमें कॉलम पर परिभाषित बाधा है। INFORMATION_SCHEMA.KEY_COLUMN_USAGE . की तरह आपको इस दृश्य के साथ लौटाई गई विदेशी कुंजियाँ भी मिलेंगी। हालांकि, INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE केवल प्रमुख बाधाओं तक सीमित नहीं है।

SELECT 
  TABLE_NAME, 
  COLUMN_NAME,
  CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE;

परिणाम:

+--------------+---------------+-------------------------------+
| TABLE_NAME   | COLUMN_NAME   | CONSTRAINT_NAME               |
|--------------+---------------+-------------------------------|
| Albums       | ArtistId      | FK_Albums_Artists             |
| Albums       | GenreId       | FK_Albums_Genres              |
| Albums       | AlbumId       | PK__Albums__97B4BE379FC780BD  |
| Artists      | ArtistId      | PK__Artists__25706B50FCD918B1 |
| Genres       | GenreId       | PK__Genres__0385057E88BB96F8  |
+--------------+---------------+-------------------------------+

आप WHERE . का उपयोग कर सकते हैं केवल एक विशिष्ट तालिका या कॉलम को वापस करने के लिए क्लॉज:

SELECT 
  TABLE_NAME, 
  COLUMN_NAME,
  CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
WHERE COLUMN_NAME = 'ArtistId';

परिणाम:

+--------------+---------------+-------------------------------+
| TABLE_NAME   | COLUMN_NAME   | CONSTRAINT_NAME               |
|--------------+---------------+-------------------------------|
| Albums       | ArtistId      | FK_Albums_Artists             |
| Artists      | ArtistId      | PK__Artists__25706B50FCD918B1 |
+--------------+---------------+-------------------------------+

इस मामले में मैंने एक कॉलम नाम निर्दिष्ट किया है, इसलिए उसने उस नाम के कॉलम पर सभी बाधाओं को वापस कर दिया। जैसा कि यह पता चला है, डेटाबेस दो अलग-अलग तालिकाओं में एक ही कॉलम नाम का उपयोग करता है। एक में विदेशी कुंजी बाधा है, दूसरी प्राथमिक कुंजी है। इसलिए दोनों पंक्तियों को वापस कर दिया जाता है।

फिर से, आप तारक का उपयोग कर सकते हैं (* ) वाइल्डकार्ड सभी कॉलम लौटाने के लिए।

SELECT *
FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
WHERE TABLE_NAME = 'Artists';

परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):

TABLE_CATALOG      | Music
TABLE_SCHEMA       | dbo
TABLE_NAME         | Artists
COLUMN_NAME        | ArtistId
CONSTRAINT_CATALOG | Music
CONSTRAINT_SCHEMA  | dbo
CONSTRAINT_NAME    | PK__Artists__25706B50FCD918B1

इस उदाहरण में मैंने आउटपुट को एक विशिष्ट टेबल पर केवल बाधाओं तक सीमित कर दिया है।

उदाहरण 4 - CONSTRAINT_TABLE_USAGE सिस्टम दृश्य

INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE सिस्टम व्यू वर्तमान डेटाबेस में प्रत्येक तालिका के लिए एक पंक्ति देता है जिसमें तालिका पर परिभाषित एक बाधा है।

SELECT 
  TABLE_NAME,
  CONSTRAINT_NAME 
FROM INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE;

परिणाम:

+--------------+-------------------------------+
| TABLE_NAME   | CONSTRAINT_NAME               |
|--------------+-------------------------------|
| Artists      | PK__Artists__25706B50FCD918B1 |
| Genres       | PK__Genres__0385057E88BB96F8  |
| Albums       | PK__Albums__97B4BE379FC780BD  |
| Albums       | FK_Albums_Artists             |
| Albums       | FK_Albums_Genres              |
+--------------+-------------------------------+

यह दृश्य उस स्तंभ नाम को वापस नहीं करता है जिस पर बाधाओं का उपयोग किया जाता है, इसलिए यह आपकी आवश्यकताओं के आधार पर आपके लिए उतना उपयोगी नहीं हो सकता है।

यहां एक उदाहरण दिया गया है जो शैलियों . के लिए इस दृश्य द्वारा लौटाए गए सभी डेटा को दिखाता है तालिका:

SELECT * 
FROM INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE
WHERE TABLE_NAME = 'Genres';

परिणाम:

TABLE_CATALOG      | Music
TABLE_SCHEMA       | dbo
TABLE_NAME         | Genres
CONSTRAINT_CATALOG | Music
CONSTRAINT_SCHEMA  | dbo
CONSTRAINT_NAME    | PK__Genres__0385057E88BB96F8

उदाहरण 5 - TABLE_CONSTRAINTS सिस्टम व्यू

INFORMATION_SCHEMA.TABLE_CONSTRAINTS सिस्टम दृश्य वर्तमान डेटाबेस में प्रत्येक तालिका बाधा के लिए एक पंक्ति देता है।

SELECT 
  TABLE_NAME,
  CONSTRAINT_NAME,
  CONSTRAINT_TYPE
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS;

परिणाम:

+--------------+-------------------------------+-------------------+
| TABLE_NAME   | CONSTRAINT_NAME               | CONSTRAINT_TYPE   |
|--------------+-------------------------------+-------------------|
| Artists      | PK__Artists__25706B50FCD918B1 | PRIMARY KEY       |
| Genres       | PK__Genres__0385057E88BB96F8  | PRIMARY KEY       |
| Albums       | PK__Albums__97B4BE379FC780BD  | PRIMARY KEY       |
| Albums       | FK_Albums_Artists             | FOREIGN KEY       |
| Albums       | FK_Albums_Genres              | FOREIGN KEY       |
+--------------+-------------------------------+-------------------+

यह दृश्य स्तंभ नाम प्रदान नहीं करता है, लेकिन यह बाधा प्रकार प्रदान करता है। इसलिए, आप परिणामों को केवल प्राथमिक कुंजियों तक सीमित कर सकते हैं:

SELECT 
  TABLE_NAME,
  CONSTRAINT_NAME,
  CONSTRAINT_TYPE
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_TYPE = 'PRIMARY KEY';

परिणाम:

+--------------+-------------------------------+-------------------+
| TABLE_NAME   | CONSTRAINT_NAME               | CONSTRAINT_TYPE   |
|--------------+-------------------------------+-------------------|
| Artists      | PK__Artists__25706B50FCD918B1 | PRIMARY KEY       |
| Genres       | PK__Genres__0385057E88BB96F8  | PRIMARY KEY       |
| Albums       | PK__Albums__97B4BE379FC780BD  | PRIMARY KEY       |
+--------------+-------------------------------+-------------------+

यहां एक उदाहरण दिया गया है जो वाइल्डकार्ड का उपयोग करता है (* ) वर्ण कलाकारों . पर बाधाओं के लिए सभी डेटा वापस करने के लिए तालिका:

SELECT *
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME = 'Artists';

परिणाम:

CONSTRAINT_CATALOG | Music
CONSTRAINT_SCHEMA  | dbo
CONSTRAINT_NAME    | PK__Artists__25706B50FCD918B1
TABLE_CATALOG      | Music
TABLE_SCHEMA       | dbo
TABLE_NAME         | Artists
CONSTRAINT_TYPE    | PRIMARY KEY
IS_DEFERRABLE      | NO
INITIALLY_DEFERRED | NO

उदाहरण 6 - key_constraints सिस्टम व्यू

sys.key_constraints सिस्टम व्यू में प्रत्येक ऑब्जेक्ट के लिए एक पंक्ति होती है जो प्राथमिक कुंजी या अद्वितीय बाधा होती है। इसलिए हम प्रत्येक प्राथमिक कुंजी के लिए प्रासंगिक तालिका के साथ डेटाबेस में सभी प्राथमिक कुंजी बाधाओं को वापस करने के लिए निम्नलिखित कोड का उपयोग कर सकते हैं:

SELECT 
  OBJECT_NAME(parent_object_id) AS 'Table',
  name
FROM sys.key_constraints 
WHERE type = 'PK';

परिणाम:

+---------+-------------------------------+
| Table   | name                          |
|---------+-------------------------------|
| Artists | PK__Artists__25706B50FCD918B1 |
| Genres  | PK__Genres__0385057E88BB96F8  |
| Albums  | PK__Albums__97B4BE379FC780BD  |
+---------+-------------------------------+

बेशक, आप WHERE . को हटा सकते हैं प्राथमिक कुंजी और . दोनों को वापस करने के लिए क्लॉज अद्वितीय कुंजियाँ।

पिछला उदाहरण OBJECT_NAME() . का उपयोग करता है ऑब्जेक्ट_आईडी के बजाय पैरेंट टेबल का नाम वापस करने के लिए फ़ंक्शन। अगर मैंने OBJECT_NAME() . का इस्तेमाल नहीं किया है समारोह, परिणाम इस तरह दिखेगा:

SELECT 
  parent_object_id,
  name
FROM sys.key_constraints
WHERE type = 'PK';

परिणाम:

+--------------------+-------------------------------+
| parent_object_id   | name                          |
|--------------------+-------------------------------|
| 885578193          | PK__Artists__25706B50FCD918B1 |
| 917578307          | PK__Genres__0385057E88BB96F8  |
| 949578421          | PK__Albums__97B4BE379FC780BD  |
+--------------------+-------------------------------+

parent_object_id मूल वस्तु के नाम के बजाय वापस कर दिया जाता है। OBJECT_NAME() फ़ंक्शन हमारे लिए यह समझना बहुत आसान बनाता है कि प्रत्येक कुंजी किस तालिका पर लागू होती है।

यहां एक उदाहरण दिया गया है जहां मैं वाइल्डकार्ड का उपयोग करता हूं (* ) एल्बम . पर प्राथमिक कुंजी के लिए सभी कॉलम वापस करने के लिए वर्ण तालिका:

SELECT *
FROM sys.key_constraints
WHERE type = 'PK'
AND OBJECT_NAME(parent_object_id) = 'Albums';

परिणाम:

name                | PK__Albums__97B4BE379FC780BD
object_id           | 965578478
principal_id        | NULL
schema_id           | 1
parent_object_id    | 949578421
type                | PK
type_desc           | PRIMARY_KEY_CONSTRAINT
create_date         | 2019-05-02 12:56:06.377
modify_date         | 2019-05-02 12:56:06.377
is_ms_shipped       | 0
is_published        | 0
is_schema_published | 0
unique_index_id     | 1
is_system_named     | 1
is_enforced         | 1

उदाहरण 7 - sys.objects सिस्टम दृश्य

sys.objects सिस्टम व्यू में प्रत्येक उपयोगकर्ता-परिभाषित, स्कीमा-स्कोप्ड ऑब्जेक्ट के लिए एक पंक्ति होती है जो डेटाबेस के भीतर बनाई जाती है। तो इसमें हमारी टेबल और प्राथमिक कुंजियाँ शामिल हैं।

हम पिछली क्वेरी ले सकते हैं और key_constraints . को बदल सकते हैं objects . के साथ और हमें वही परिणाम मिलेगा:

SELECT 
  OBJECT_NAME(parent_object_id) AS 'Table',
  name
FROM sys.objects 
WHERE type = 'PK';

परिणाम:

+---------+-------------------------------+
| Table   | name                          |
|---------+-------------------------------|
| Artists | PK__Artists__25706B50FCD918B1 |
| Genres  | PK__Genres__0385057E88BB96F8  |
| Albums  | PK__Albums__97B4BE379FC780BD  |
+---------+-------------------------------+

यहां एक उदाहरण दिया गया है जो PK__Genres__0385057E88BB96F8 के लिए सभी डेटा लौटाता है प्राथमिक कुंजी:

SELECT *
FROM sys.objects
WHERE name = 'PK__Genres__0385057E88BB96F8';

परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):

name                | PK__Genres__0385057E88BB96F8
object_id           | 933578364
principal_id        | NULL
schema_id           | 1
parent_object_id    | 917578307
type                | PK
type_desc           | PRIMARY_KEY_CONSTRAINT
create_date         | 2019-05-02 12:56:06.110
modify_date         | 2019-05-02 12:56:06.110
is_ms_shipped       | 0
is_published        | 0
is_schema_published | 0

उदाहरण 8 - REFERENTIAL_CONSTRAINTS सिस्टम व्यू

यह थोड़ा खिंचाव वाला है, लेकिन यह आपकी स्थिति के आधार पर उपयोगी हो सकता है। और तकनीकी रूप से, यह (कुछ) प्राथमिक कुंजी लौटाता है।

INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS सिस्टम व्यू प्रत्येक FOREIGN KEY के लिए एक पंक्ति लौटाता है वर्तमान डेटाबेस में बाधा। तो इसका उद्देश्य वास्तव में विदेशी कुंजी वापस करना है - प्राथमिक कुंजी नहीं। हालाँकि, यह दृश्य उपयोगी हो सकता है यदि आप केवल उन सभी प्राथमिक कुंजियों को देखना चाहते हैं जिनमें एक संबद्ध विदेशी कुंजी है। यदि आप सभी प्राथमिक कुंजियों को देखना चाहते हैं, भले ही कोई संबद्ध विदेशी कुंजी हो, तो यह उपयोग करने का एक विश्वसनीय तरीका नहीं है।

यहां एक उदाहरण दिया गया है:

SELECT 
    CONSTRAINT_NAME,
    UNIQUE_CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS;

परिणाम:

+-------------------+-------------------------------+
| CONSTRAINT_NAME   | UNIQUE_CONSTRAINT_NAME        |
|-------------------+-------------------------------|
| FK_Albums_Artists | PK__Artists__25706B50FCD918B1 |
| FK_Albums_Genres  | PK__Genres__0385057E88BB96F8  |
+-------------------+-------------------------------+

जैसा कि आप देख सकते हैं, यह केवल उन प्राथमिक कुंजियों को लौटाता है जिनके पास एक संबद्ध विदेशी कुंजी है। अधिक सटीक होने के लिए, यह वास्तव में दूसरा तरीका है - यह सभी विदेशी कुंजियों को उनके संबंधित UNIQUE के साथ लौटाता है बाधा।

इसलिए यदि हम इन परिणामों की तुलना पिछले उदाहरणों के परिणामों से करते हैं, तो हम देख सकते हैं कि केवल दो प्राथमिक कुंजियाँ लौटाई जाती हैं (पिछले उदाहरणों से तीन की तुलना में)। ऐसा इसलिए है क्योंकि इस डेटाबेस में प्राथमिक कुंजियों में से एक ( PK__Albums__97B4BE379FC780BD ) संबद्ध विदेशी कुंजी नहीं है।

यहां एक उदाहरण दिया गया है जो विदेशी कुंजियों के लिए सभी डेटा लौटाता है, जिनमें से PK__Artists__25706B50FCD918B1 UNIQUE है बाधा:

SELECT *
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
WHERE UNIQUE_CONSTRAINT_NAME = 'PK__Artists__25706B50FCD918B1';

परिणाम:

CONSTRAINT_CATALOG        | Music
CONSTRAINT_SCHEMA         | dbo
CONSTRAINT_NAME           | FK_Albums_Artists
UNIQUE_CONSTRAINT_CATALOG | Music
UNIQUE_CONSTRAINT_SCHEMA  | dbo
UNIQUE_CONSTRAINT_NAME    | PK__Artists__25706B50FCD918B1
MATCH_OPTION              | SIMPLE
UPDATE_RULE               | NO ACTION
DELETE_RULE               | NO ACTION

इस मामले में, केवल एक विदेशी कुंजी लौटा दी जाती है।

जैसा कि उल्लेख किया गया है, यह दृश्य मुख्य रूप से विदेशी कुंजी जानकारी वापस करने के लिए है, इसलिए केवल इस विधि का उपयोग करें यदि आप संबंधित प्राथमिक कुंजी के साथ विदेशी कुंजी जानकारी देखना चाहते हैं। यदि आप सभी प्राथमिक कुंजियों को देखना चाहते हैं तो इस पद्धति का उपयोग न करें, भले ही उनके पास एक संबद्ध विदेशी कुंजी हो।

उदाहरण 9 - sp_fkeys सिस्टम संग्रहित प्रक्रिया

यह विधि पिछली विधि के समान है, इस अर्थ में कि यह विदेशी कुंजी जानकारी लौटाती है। यह प्रत्येक विदेशी कुंजी से जुड़ी प्राथमिक कुंजी भी लौटाता है।

उदाहरण:

EXEC sp_fkeys Artists;

परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):

PKTABLE_QUALIFIER | Music
PKTABLE_OWNER     | dbo
PKTABLE_NAME      | Artists
PKCOLUMN_NAME     | ArtistId
FKTABLE_QUALIFIER | Music
FKTABLE_OWNER     | dbo
FKTABLE_NAME      | Albums
FKCOLUMN_NAME     | ArtistId
KEY_SEQ           | 1
UPDATE_RULE       | 1
DELETE_RULE       | 1
FK_NAME           | FK_Albums_Artists
PK_NAME           | PK__Artists__25706B50FCD918B1
DEFERRABILITY     | 7

मैं इसके बजाय निम्नलिखित सिंटैक्स का उपयोग कर सकता था (या इन तर्कों का एक संयोजन):

EXEC sp_fkeys 
  @pktable_name = Artists,
  @pktable_owner = dbo,
  @pktable_qualifier = Music,
  @fktable_name = Albums,
  @fktable_owner = dbo,
  @fktable_qualifier = Music;

पिछले उदाहरण की तरह, सभी प्राथमिक कुंजियों को वापस करने के लिए इस पद्धति पर भरोसा नहीं किया जाना चाहिए। यदि प्राथमिक कुंजी में संबद्ध विदेशी कुंजी नहीं है, तो उसे वापस नहीं किया जाएगा।

उदाहरण 10 - sp_helpconstraint सिस्टम संग्रहित प्रक्रिया

sp_helpconstraint सिस्टम संग्रहीत कार्यविधि सभी बाधा प्रकारों की सूची, उनके उपयोगकर्ता-परिभाषित या सिस्टम द्वारा आपूर्ति किए गए नाम, वे कॉलम जिन पर उन्हें परिभाषित किया गया है, और अभिव्यक्ति जो बाधा को परिभाषित करती है (DEFAULT के लिए) और CHECK केवल बाधाएं)।

इसलिए आप इसका उपयोग अपने डेटाबेस में प्राथमिक कुंजियों की जानकारी वापस करने के लिए कर सकते हैं।

उदाहरण:

EXEC sp_helpconstraint Albums;

परिणाम:

+---------------+
| Object Name   |
|---------------|
| Albums        |
+---------------+
 
-[ RECORD 1 ]-------------------------
constraint_type        | FOREIGN KEY
constraint_name        | FK_Albums_Artists
delete_action          | No Action
update_action          | No Action
status_enabled         | Enabled
status_for_replication | Is_For_Replication
constraint_keys        | ArtistId
-[ RECORD 2 ]-------------------------
constraint_type        |  
constraint_name        |  
delete_action          |  
update_action          |  
status_enabled         |  
status_for_replication |  
constraint_keys        | REFERENCES Music.dbo.Artists (ArtistId)
-[ RECORD 3 ]-------------------------
constraint_type        | FOREIGN KEY
constraint_name        | FK_Albums_Genres
delete_action          | No Action
update_action          | No Action
status_enabled         | Enabled
status_for_replication | Is_For_Replication
constraint_keys        | GenreId
-[ RECORD 4 ]-------------------------
constraint_type        |  
constraint_name        |  
delete_action          |  
update_action          |  
status_enabled         |  
status_for_replication |  
constraint_keys        | REFERENCES Music.dbo.Genres (GenreId)
-[ RECORD 5 ]-------------------------
constraint_type        | PRIMARY KEY (clustered)
constraint_name        | PK__Albums__97B4BE379FC780BD
delete_action          | (n/a)
update_action          | (n/a)
status_enabled         | (n/a)
status_for_replication | (n/a)
constraint_keys        | AlbumId

उदाहरण 11 - sp_help सिस्टम संग्रहित प्रक्रिया

sp_help सिस्टम संग्रहीत कार्यविधि एक डेटाबेस ऑब्जेक्ट के बारे में जानकारी की रिपोर्ट करती है (sys.sysobjects . में सूचीबद्ध कोई भी ऑब्जेक्ट) संगतता दृश्य), एक उपयोगकर्ता-परिभाषित डेटा प्रकार, या एक डेटा प्रकार। इसमें प्राथमिक कुंजियों के बारे में जानकारी शामिल है।

जब आप इसे बिना किसी तर्क के चलाते हैं, तो यह वर्तमान डेटाबेस में मौजूद सभी प्रकार की वस्तुओं की सारांश जानकारी के बारे में जानकारी प्रदान करता है (यानी एक लॉट जानकारी का)।

हालाँकि, आप किसी तालिका का नाम प्रदान कर सकते हैं, और वह उस तालिका के बारे में जानकारी लौटा देगी। फिर से, आपको बहुत सारी जानकारी वापस मिल जाएगी, लेकिन इनमें से प्राथमिक महत्वपूर्ण जानकारी होगी।

उदाहरण:

EXEC sp_help Artists;

परिणाम:

+---------+---------+------------+-------------------------+
| Name    | Owner   | Type       | Created_datetime        |
|---------+---------+------------+-------------------------|
| Artists | dbo     | user table | 2019-05-02 12:56:05.840 |
+---------+---------+------------+-------------------------+
 
-[ RECORD 1 ]-------------------------
Column_name          | ArtistId
Type                 | int
Computed             | no
Length               | 4
Prec                 | 10   
Scale                | 0    
Nullable             | no
TrimTrailingBlanks   | (n/a)
FixedLenNullInSource | (n/a)
Collation            | NULL
-[ RECORD 2 ]-------------------------
Column_name          | ArtistName
Type                 | nvarchar
Computed             | no
Length               | 510
Prec                 |      
Scale                |      
Nullable             | no
TrimTrailingBlanks   | (n/a)
FixedLenNullInSource | (n/a)
Collation            | SQL_Latin1_General_CP1_CI_AS
-[ RECORD 3 ]-------------------------
Column_name          | ActiveFrom
Type                 | date
Computed             | no
Length               | 3
Prec                 | 10   
Scale                | 0    
Nullable             | yes
TrimTrailingBlanks   | (n/a)
FixedLenNullInSource | (n/a)
Collation            | NULL
 
+------------+--------+-------------+-----------------------+
| Identity   | Seed   | Increment   | Not For Replication   |
|------------+--------+-------------+-----------------------|
| ArtistId   | 1      | 1           | 0                     |
+------------+--------+-------------+-----------------------+
 
+-------------------------------+
| RowGuidCol                    |
|-------------------------------|
| No rowguidcol column defined. |
+-------------------------------+
 
+-----------------------------+
| Data_located_on_filegroup   |
|-----------------------------|
| PRIMARY                     |
+-----------------------------+
 
+-------------------------------+---------------------------------------------------+--------------+
| index_name                    | index_description                                 | index_keys   |
|-------------------------------+---------------------------------------------------+--------------|
| PK__Artists__25706B50FCD918B1 | clustered, unique, primary key located on PRIMARY | ArtistId     |
+-------------------------------+---------------------------------------------------+--------------+
 
-[ RECORD 1 ]-------------------------
constraint_type        | PRIMARY KEY (clustered)
constraint_name        | PK__Artists__25706B50FCD918B1
delete_action          | (n/a)
update_action          | (n/a)
status_enabled         | (n/a)
status_for_replication | (n/a)
constraint_keys        | ArtistId
 
+--------------------------------------+
| Table is referenced by foreign key   |
|--------------------------------------|
| Music.dbo.Albums: FK_Albums_Artists  |
+--------------------------------------+

इसके बारे में कुछ बुनियादी जानकारी प्राप्त करने के लिए आप प्राथमिक कुंजी का नाम भी प्रदान कर सकते हैं:

EXEC sp_help PK__Artists__25706B50FCD918B1;

परिणाम:

+-------------------------------+---------+-----------------+-------------------------+
| Name                          | Owner   | Type            | Created_datetime        |
|-------------------------------+---------+-----------------+-------------------------|
| PK__Artists__25706B50FCD918B1 | dbo     | primary key cns | 2019-05-02 12:56:05.853 |
+-------------------------------+---------+-----------------+-------------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर बैकअप जाँच

  2. टी-एसक्यूएल में स्प्लिट फ़ंक्शन बराबर?

  3. क्या एक दृश्य एक साधारण क्वेरी से तेज है?

  4. एक उपश्रेणी में एकाधिक परिणामों को एक अल्पविराम से अलग किए गए मान में संयोजित करें

  5. EF5:फ़ाइल '{0}' को डेटाबेस '{1}' के रूप में संलग्न नहीं कर सकता