यह आलेख SQL सर्वर में लिंक किए गए सर्वर को निकालने के लिए Transact-SQL का उपयोग करने का एक उदाहरण प्रदान करता है।
लिंक किए गए सर्वर को निकालने के लिए, sp_dropserver
. का उपयोग करें सिस्टम संग्रहीत प्रक्रिया। यह किसी सर्वर को SQL सर्वर की स्थानीय आवृत्ति पर ज्ञात दूरस्थ और लिंक किए गए सर्वर की सूची से हटा देता है। यह संग्रहीत कार्यविधि दो तर्कों को स्वीकार करती है:सर्वर का नाम, और सर्वर से जुड़े किसी भी लॉगिन को हटाने के लिए एक वैकल्पिक तर्क।
उदाहरण 1 - लिंक किए गए सर्वर और उसके लॉगिन को ड्रॉप करें
लिंक किए गए सर्वर और उस लिंक किए गए सर्वर के लिए सभी संबद्ध लॉगिन को छोड़ने का एक उदाहरण यहां दिया गया है। इस मामले में, लिंक किए गए सर्वर को "होमर" कहा जाता है।
EXEC sp_dropserver 'Homer', 'droplogins';
परिणाम:
Commands completed successfully.
किसी भी संग्रहीत कार्यविधि की तरह, आप तर्क नामों को भी स्पष्ट रूप से शामिल कर सकते हैं। हालांकि यह परिणाम नहीं बदलता है - लिंक किए गए सर्वर को इसके संबद्ध लॉगिन के साथ छोड़ दिया जाता है।
EXEC sp_dropserver @server = 'Homer', @droplogins = 'droplogins';
परिणाम:
Commands completed successfully.
उदाहरण 2 - किसी लिंक किए गए सर्वर को उसके लॉगिन ड्रॉप किए बिना ड्रॉप करें
जैसा कि बताया गया है, droplogins
तर्क वैकल्पिक है। आप लिंक किए गए सर्वर को इस तरह भी छोड़ सकते हैं:
EXEC sp_dropserver 'Homer';
हालांकि, अगर लिंक किए गए सर्वर से जुड़े कोई लॉगिन हैं, तो आपको निम्न त्रुटि मिलेगी:
Msg 15190, Level 16, State 1, Procedure sp_dropserver, Line 56 There are still remote logins or linked logins for the server 'Homer'.
इसका मतलब है कि आपको droplogins
जोड़ना होगा तर्क।
यदि लिंक किए गए सर्वर को प्रतिकृति प्रकाशक के रूप में कॉन्फ़िगर किया गया है, तो आपको एक त्रुटि भी मिलेगी।
फिर से, यदि आप चाहें तो तर्कों के नाम स्पष्ट रूप से शामिल कर सकते हैं:
EXEC sp_dropserver @server = 'Homer', @droplogins = NULL;
परिणाम:
Msg 15190, Level 16, State 1, Procedure sp_dropserver, Line 56 There are still remote logins or linked logins for the server 'Homer'.
यदि लिंक किए गए सर्वर से कोई लॉगिन संबद्ध नहीं है, तो आपको कोई त्रुटि नहीं मिलेगी। उदाहरण के लिए, यदि आप sp_addlinkedsrvlogin
. का उपयोग किए बिना एक लिंक किया गया सर्वर बनाते हैं लॉगिन जोड़ने के लिए, आप droplogins
. का उपयोग किए बिना सर्वर को छोड़ने में सक्षम होंगे बहस। यह सच है, भले ही मैपिंग आपके स्थानीय लॉगिन और रिमोट सर्वर पर एक के बीच बनाई गई हो।
तो अगर रिमोट सर्वर में मार्ज नामक लॉगिन है, और मैं इसे स्थानीय पर मार्ज लॉगिन के तहत चलाता हूं सर्वर:
EXEC sp_addlinkedserver @server=N'Homer', @srvproduct=N'', @provider=N'MSOLEDBSQL', @datasrc=N'172.17.0.3,1433';
स्थानीय सर्वर पर मार्ज और लिंक किए गए सर्वर पर मार्ज के बीच मैपिंग बनाई जाती है। यह संभव है क्योंकि दोनों लॉगिन समान क्रेडेंशियल साझा करते हैं। इस मामले में, sp_addlinkedsrvlogin
run चलाने की कोई आवश्यकता नहीं है मार्ज को लिंक किए गए सर्वर के लिए लॉगिन के रूप में जोड़ने के लिए।
हालांकि, यदि लिंक किए गए सर्वर पर मार्ज के लिए कोई संगत लॉगिन नहीं है (या यदि है, लेकिन क्रेडेंशियल मेल नहीं खाते हैं), तो मैपिंग नहीं होगी, और मार्ज लिंक किए गए सर्वर तक नहीं पहुंच पाएगा।पी>
किसी भी तरह से, निम्न कोड चलाना सफल होगा:
EXEC sp_dropserver @server = 'Homer', @droplogins = NULL;
परिणाम:
Commands completed successfully.
यह मार्ज के लिए सफलतापूर्वक पूरा होता है, भले ही उसके स्थानीय लॉगिन और लिंक किए गए सर्वर के बीच मैपिंग हो (लेकिन लिंक किए गए सर्वर के लिए कोई अन्य लॉगिन नहीं)।