इस लेख में, मैं SQL सर्वर में लिंक किए गए सर्वर के लिए एक लॉगिन बनाता हूं। इस मामले में मैं Transact-SQL (SSMS जैसे GUI का उपयोग करने के विपरीत) का उपयोग करता हूं।
लिंक किए गए सर्वर के लिए लॉगिन बनाने के लिए, sp_addlinkedsrvlogin
. का उपयोग करें सिस्टम संग्रहीत प्रक्रिया।
सिंटैक्स
वाक्य रचना इस प्रकार है:
sp_addlinkedsrvlogin [ @rmtsrvname = ] 'rmtsrvname' [ , [ @useself = ] { 'TRUE' | 'FALSE' | NULL } ] [ , [ @locallogin = ] 'locallogin' ] [ , [ @rmtuser = ] 'rmtuser' ] [ , [ @rmtpassword = ] 'rmtpassword' ]
निम्न उदाहरण दर्शाता है कि यह कैसे काम करता है। प्रत्येक तर्क की अधिक विस्तृत व्याख्या के लिए, आधिकारिक Microsoft दस्तावेज़ देखें।
उदाहरण 1 - लिंक किए गए सर्वर के लिए लॉगिन जोड़ें
होमर नामक लिंक किए गए सर्वर के लिए मैगी नामक SQL सर्वर लॉगिन जोड़ने का एक उदाहरण यहां दिया गया है:
EXEC sp_addlinkedsrvlogin @rmtsrvname=N'Homer', @useself=N'FALSE', @locallogin=NULL, @rmtuser=N'Maggie', @rmtpassword=N'BigStrong#Passw0rd';
लिंक किए गए सर्वर को बनाने के बाद इसे स्थानीय सर्वर पर चलाएँ। आपको वास्तविक रिमोट सर्वर पर समान क्रेडेंशियल्स के साथ संबंधित लॉगिन की आवश्यकता होगी।
उदाहरण 2 - लिंक किए गए सर्वर को शामिल करें
पूर्णता के लिए, यहाँ यह फिर से है, लेकिन इस बार मैं पहले लिंक किया गया सर्वर बनाता हूँ:
EXEC sp_addlinkedserver @server=N'Homer', @srvproduct=N'', @provider=N'MSOLEDBSQL', @datasrc=N'172.17.0.2', @catalog='Music'; EXEC sp_addlinkedsrvlogin @rmtsrvname=N'Homer', @useself=N'FALSE', @locallogin=NULL, @rmtuser=N'Maggie', @rmtpassword=N'BigStrong#Passw0rd';
जब तक वास्तविक (दूरस्थ) लिंक किए गए सर्वर में समान क्रेडेंशियल्स के साथ लॉगिन होता है, तब तक स्थानीय सर्वर लिंक किए गए सर्वर में लॉग इन करने में सक्षम होगा।
उदाहरण 3 - दूरस्थ सर्वर पर लॉगिन/उपयोगकर्ता जोड़ें
जैसा कि उल्लेख किया गया है, आपको यह सुनिश्चित करना होगा कि दूरस्थ सर्वर पर संबंधित लॉगिन है। आपको यह भी सुनिश्चित करना होगा कि यह लॉगिन उपयुक्त अनुमतियों वाले डेटाबेस उपयोगकर्ता के लिए मैप करता है।
तो इस मामले में, हम रिमोट सर्वर पर कूद कर और इसे चलाकर रिमोट सर्वर पर एक लॉगिन बना सकते हैं:
CREATE LOGIN Maggie WITH PASSWORD = 'BigStrong#Passw0rd'; USE Music; CREATE USER Maggie FOR LOGIN Maggie; GRANT SELECT ON DATABASE::Music TO Maggie;
यह मैगी नामक एक लॉगिन और मैगी नामक एक संबंधित डेटाबेस उपयोगकर्ता बनाता है। यह SELECT
. भी अनुदान देता है संगीत डेटाबेस के लिए मैगी को अनुमतियाँ।
अब जब मैंने ऐसा कर लिया है, तो इस लॉगिन का उपयोग करने वाली कोई भी वितरित क्वेरी संगीत डेटाबेस तक सीमित हो जाएगी।
GRANT SELECT ON DATABASE
. का उपयोग करने का एक विकल्प , उपयोगकर्ता को db_datareader . में जोड़ना है निश्चित डेटाबेस भूमिका, या शायद एक कस्टम भूमिका के लिए।
यदि आपने दूरस्थ सर्वर पर लॉगिन और डेटाबेस उपयोगकर्ता बनाने से पहले लिंक किया गया सर्वर बनाया है, तो आपको लिंक किए गए सर्वर को छोड़ने और इसे फिर से बनाने की आवश्यकता हो सकती है। अगर ऐसा है, तो आप इसे इस तरह छोड़ सकते हैं:
EXEC sp_dropserver 'Homer', 'droplogins';
एक बार ड्रॉप हो जाने पर, आप लिंक किया गया सर्वर और उससे संबद्ध लॉगिन फिर से बना सकते हैं।
क्या मुझे वास्तव में लिंक किए गए सर्वर लॉगिन की आवश्यकता है?
यह संभव है कि आपको उपरोक्त उदाहरण की तरह लॉगिन जोड़ने की भी आवश्यकता नहीं है।
जब आप पहली बार SQL सर्वर में एक लिंक्ड सर्वर बनाते हैं, तो स्थानीय सर्वर पर सभी लॉगिन और लिंक किए गए सर्वर पर दूरस्थ लॉगिन के बीच एक डिफ़ॉल्ट मैपिंग स्वचालित रूप से बनाई जाती है। SQL सर्वर लॉगिन की ओर से लिंक किए गए सर्वर से कनेक्ट होने पर स्थानीय लॉगिन के क्रेडेंशियल का उपयोग करता है।
इसलिए यदि आपके स्थानीय लॉगिन में समान क्रेडेंशियल के साथ लिंक किए गए सर्वर पर संबंधित लॉगिन है, और उसके पास उपयुक्त अनुमतियां हैं, तो आप जाने के लिए अच्छे हैं। लिंक किए गए सर्वर के लिए लॉगिन जोड़ने की आवश्यकता नहीं है।
ऐसा कहने के बाद, आपके पास एक अलग लॉगिन जोड़ने के अन्य कारण हो सकते हैं, जैसे इसे अन्य उपयोगकर्ताओं के लिए जोड़ना।
आप किसी एकल स्थानीय उपयोगकर्ता के लिए एक लॉगिन मैपिंग बनाना भी चाह सकते हैं, इस स्थिति में आप @locallogin
का उपयोग कर सकते हैं। मैप किए जाने वाले स्थानीय लॉगिन को निर्दिष्ट करने के लिए तर्क।
विभिन्न परिदृश्यों के तहत लिंक किए गए सर्वर लॉगिन तक पहुंचने की कोशिश कर रहे विभिन्न स्थानीय लॉगिन के उदाहरणों के लिए देखें कि लिंक किए गए सर्वर पर लॉगिन कैसे काम करते हैं।