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 | +-------------------------------+---------+-----------------+-------------------------+