बहुत पहले नहीं, मैं एक ऐसे प्रोजेक्ट पर काम कर रहा था, जहां हमें टेबल के डेटा टाइप को बदलने की जरूरत थी। तालिका में लाखों पंक्तियाँ थीं, और हमने मौजूदा तालिका परिभाषा का उपयोग करके एक अलग तालिका बनाने और उस तालिका में पंक्तियों को सम्मिलित करने का निर्णय लिया। नई तालिका में डेटा निर्यात करने के बाद, हमने sp_rename का उपयोग करके पुरानी तालिका, बाधा और अनुक्रमणिका का नाम बदल दिया। संग्रहीत प्रक्रिया।
वर्तमान लेख अनुक्रमणिका का नाम बदलने के तरीकों के लिए समर्पित है।
sp_rename संग्रहीत कार्यविधि की मूल बातें
हम निम्न विधियों में से किसी एक के साथ अनुक्रमणिका का नाम बदल सकते हैं:
- SQL सर्वर प्रबंधन स्टूडियो का उपयोग करना।
- sp_rename का उपयोग करना संग्रहीत प्रक्रिया।
सबसे पहले, आइए बुनियादी बातों को समझते हैं।
sp_rename प्रक्रिया का उपयोग टेबल, टेबल कॉलम, इंडेक्स नाम और सामान्य भाषा रनटाइम उपयोगकर्ता-परिभाषित प्रकारों का नाम बदलने के लिए किया जाता है।
प्रक्रिया का सिंटैक्स इस प्रकार है:
निष्पादन sp_rename 'object_name', 'new_name', 'object_type'
- ऑब्जेक्ट_नाम उस ऑब्जेक्ट का नाम निर्दिष्ट करता है जिसका आप नाम बदलना चाहते हैं।
- यदि आप तालिका का नाम बदल रहे हैं, तो object_name का प्रारूप पैरामीटर [table_name] . हो सकता है या [schema_name].[table_name] ।
- यदि आप तालिका के कॉलम नाम का नाम बदल रहे हैं, तो ऑब्जेक्ट_नाम का प्रारूप पैरामीटर [table_name] होना चाहिए।[column_name].
- यदि आप तालिका के अनुक्रमणिका नाम का नाम बदल रहे हैं, तो object_name का प्रारूप पैरामीटर [schema_name].[table_name].[index_name] होना चाहिए . या यह [table_name] हो सकता है।[index_name] ।
नोट: यदि आप एक योग्य वस्तु नाम का उपयोग कर रहे हैं, तो आपको उद्धरण चिह्न निर्दिष्ट करना होगा।
- नया_नाम ऑब्जेक्ट का नया नाम निर्दिष्ट करता है जो एक-भाग पहचानकर्ता होना चाहिए।
- ऑब्जेक्ट_प्रकार उस वस्तु के प्रकार को निर्दिष्ट करता है जिसका आप नाम बदलना चाहते हैं (एक वैकल्पिक पैरामीटर)। object_type . का मान निम्नलिखित में से कोई भी होना चाहिए:
- कॉलम
- डेटाबेस
- इंडेक्स
- वस्तु
- सांख्यिकी
डेमो सेटअप
हमारे स्पष्टीकरण और परीक्षण उद्देश्यों के लिए, मैंने एक डेमो सेटअप तैयार किया है। StudentDB . नाम का डेटाबेस है , जहां मैंने tblStudent . नाम की एक तालिका बनाई है ।
डेटाबेस बनाने के लिए क्वेरी:
Create database [StudentDB]
तालिका बनाने के लिए क्वेरी:
USE [StudentDB]
GO
CREATE TABLE [dbo].[tblStudents](
[ID] [int] IDENTITY(1,1) NOT NULL,
[student_name] [varchar](250) NOT NULL,
[student_code] [varchar](5) NOT NULL,
[student_grade] [char](2) NOT NULL,
[SchoolID] [int] NOT NULL,
CONSTRAINT [PK_tblStudent] PRIMARY KEY CLUSTERED([ID] ASC))
मैंने INDX_tblStudents_Std_Code नाम का इंडेक्स भी बनाया है tblStudent . पर तालिका:
USE [StudentDB]
GO
CREATE NONCLUSTERED INDEX [INDX_tblStudents_Std_Code] ON [dbo].[tblStudents]
([student_code] ASC)
निम्न क्वेरी तालिका में डेटा सम्मिलित करती है:
insert into [tblStudents]
(student_name,student_code,student_grade,SchoolID)
values
('Nisarg Upadhyay','ST001','A',1),
('Dixit Upadhyay','ST003','A',1),
('Bharti Upadhyay','ST004','C',2),
('Nimesh Patel','ST005','C',2),
('Raghav Dave','ST006','A',1)
अब, देखते हैं कि हम PK_tblStudent . का नाम कैसे बदलते हैं SQL सर्वर प्रबंधन स्टूडियो का उपयोग कर अनुक्रमणिका।
SSMS का उपयोग करके अनुक्रमणिका का नाम बदलें
सबसे पहले, आइए PK_tblStudent . का नाम बदलें सूचकांक।
- SQL सर्वर प्रबंधन स्टूडियो लॉन्च करें और डेटाबेस इंजन से कनेक्ट करें।
- StudentDB का विस्तार करें डेटाबेस> टेबल्स > tblविद्यार्थी > सूचकांक
- PK_tblStudent पर राइट-क्लिक करें अनुक्रमणिका> चुनें नाम बदलें मेनू से, या अनुक्रमणिका नाम पर सिंगल-क्लिक करें।
सूचकांक संपादन योग्य हो जाता है। अनुक्रमणिका का नया नाम निर्दिष्ट करें और Enter hit दबाएं ।
इंडेक्स का नाम बदलने से पहले, SSMS निम्नलिखित चेतावनी दिखाएगा। हां Click क्लिक करें ।
अनुक्रमणिका का नाम बदल दिया गया है, और परिवर्तन तुरंत लागू कर दिए गए हैं।
अगर इंडेक्स का नाम अपडेट नहीं किया गया है, तो इंडेक्स को रीफ़्रेश करें फ़ोल्डर:
यह सत्यापित करने के लिए कि अनुक्रमणिका का नाम बदल दिया गया है, निम्न क्वेरी चलाएँ:
select object_name(object_id) [table name],name [Index Name], type_desc [Index Type] from sys.indexes where object_id=object_id('tblStudents')
आउटपुट :
जैसा कि आप देख सकते हैं, अनुक्रमणिका का नाम बदल दिया गया है, और SSMS इस उद्देश्य के लिए प्रभावी साबित हुआ है।
अब, आइए समझते हैं कि कैसे हम sp_rename . का उपयोग करके अनुक्रमणिका का नाम बदल सकते हैं संग्रहीत प्रक्रिया।
sp_rename संग्रहीत कार्यविधि का उपयोग करके अनुक्रमणिका का नाम बदलें
हम INDX_tblStudents_Std_Code नाम के इंडेक्स का नाम बदलने जा रहे हैं से INDX_tblStudent_Student_Code ।
हमारा sp_rename संग्रहीत कार्यविधि निम्नलिखित कोड में कार्य करेगी:
exec sp_rename 'dbo.tblStudents.INDX_tblStudents_Std_Code','INDX_tblStudents_Student_Code'
अनुक्रमणिका का नामकरण सत्यापित करने के लिए क्वेरी चलाएँ:
select object_name(object_id) [table name],name [Index Name], type_desc [Index Type] from sys.indexes where object_id=object_id('tblStudents')
आउटपुट:
महत्वपूर्ण नोट्स
सुरक्षा और अनुमति
अनुक्रमणिका का नाम बदलने के लिए, आपके पास ALTER . होना चाहिए अनुक्रमणिका पर अनुमति।
आंकड़े कैसे बदलते हैं
जब हम इंडेक्स का नाम बदलते हैं, तो इंडेक्स से जुड़े आंकड़ों का नाम अपने आप बदल जाता है। आइए हम प्राथमिक कुंजी से जुड़े आंकड़े देखें।
खोलें SQL सर्वर प्रबंधन स्टूडियो> आवश्यक डेटाबेस का विस्तार करें> tblStudents तालिका> सांख्यिकी
जैसा कि आप देख सकते हैं, आंकड़ों का नाम बदल दिया गया है।
क्वेरी निष्पादन योजना कैसे बदलती है
जब हम अनुक्रमणिका का नाम बदलते हैं, तो क्वेरी निष्पादन योजना का मेटाडेटा भी स्वचालित रूप से बदल जाता है। इसे स्पष्ट करने के लिए, आइए PK_tblStudent का उपयोग करके क्वेरी की निष्पादन योजना की समीक्षा करें। सूचकांक।
निम्नलिखित चयन कथन चलाएँ:
Select * from [tblStudents] where ID=’5’
आउटपुट:
निष्पादन योजना में अनुक्रमणिका का नाम बदल दिया गया है।
सारांश
इसलिए, हमने sp_rename . के बारे में सीखा है संग्रहीत प्रक्रिया वाक्यविन्यास और उपयोग। इसके अलावा, हमने टेबल पर इंडेक्स का नाम बदलने के दो तरीकों की पहचान की है और कोशिश की है। अब हम इसे SSMS या समर्पित संग्रहीत कार्यविधि दोनों के साथ कर सकते हैं। हमने आँकड़ों और क्वेरी निष्पादन योजनाओं पर अनुक्रमित नामों को बदलने के प्रभावों को भी स्पष्ट किया है। इसके अलावा, डीबीफोर्ज इंडेक्स मैनेजर की मदद से इंडेक्स फ्रैगमेंटेशन मुद्दों को ढूंढना और ठीक करना पूरा किया जा सकता है। मुझे उम्मीद है कि व्यावहारिक सुझावों वाला यह लेख आपके काम के लिए मददगार साबित होगा।
संबंधित लेख
SQL सर्वर तालिकाओं का नाम बदलने के विभिन्न तरीके