SQL सर्वर SQL सर्वर से जुड़े सर्वर सेटअप के लिए


25

कृपया बताएं कि SQL सर्वर लिंक्ड सर्वर सेट करने के लिए क्या आवश्यक है।

सर्वर A SQL 2005 विंडो लॉगइन है केवल Server B एक ही है (SQL 2005 विंडो लॉगइन केवल)

सर्वर A विंडोज़ एक्सपी सर्वर बी चलाता है विंडोज सर्वर 2003

दोनों SQL सर्वर सेवाएँ एक ही डोमेन खाते के अंतर्गत चल रही हैं। मैं अपने कार्य केंद्र में एक डोमेन खाते के साथ लॉग इन हूं जिसमें दोनों एसक्यूएल सर्वर पर प्रशासनिक अधिकार हैं।

ध्यान दें कि ये दोनों SQL सर्वर 2005 SP2 हैं - मेरे पास पुराने हॉटफ़िक्स हैं जो मुझे इंगित किए गए हैं, लेकिन वे पहले से ही लागू हैं।

मुझे जो समस्या हो रही है वह यह है कि त्रुटि: "लॉगिन उपयोगकर्ता 'NT AUTHORITY \ ANONYMOUS लॉगऑन' के लिए विफल रहा। (Microsoft SQL सर्वर, त्रुटि: 18456)"

जवाबों:


18

इस मुद्दे की मेरी समझ से यह एक "HOP" मुद्दा है।

यानी आप सर्वर बी में अपने लॉगिन विवरण (एसएसपीआई के साथ) को रिले करने के लिए सर्वर ए का उपयोग करने की कोशिश कर रहे हैं।

SQL Server 2005 में उन्होंने सुरक्षा समस्याओं का एक पूरा लोड जोड़ा है जो इसे जितना कठिन होना चाहिए, उससे अधिक कठिन है। शब्द "केर्बरोस ऑथेंटिकेशन" अधिकांश sys-admins / DBA के जीवन का एक हिस्सा बन जाएगा। यह प्रभावी रूप से पास-थ्रू प्रमाणीकरण के लिए उपयोग किया जाता है।

यहाँ मूल बातें हैं जो आपको चाहिए। 1) सर्वर (ए और बी) को केर्बोस सक्षम के लिए प्रतिनिधिमंडल के साथ सक्रिय निर्देशिका (एडी) में स्थापित करने की आवश्यकता है। (यह आपकी सक्रिय निर्देशिका व्यवस्थापक पैनल के माध्यम से सेट किया गया है)

2) आपके SQL सर्वर द्वारा चलाए जाने वाले सेवा खाते को भी प्रतिनिधिमंडल को सक्षम करने की आवश्यकता है (यह आपके सक्रिय निर्देशिका व्यवस्थापक पैनल के माध्यम से भी सेट है)। - यदि वे एक सेवा खाते के तहत नहीं चल रहे हैं, तो आपको एक बनाने की आवश्यकता है।

3) सर्वर को उदाहरण और HOST और मशीन के नाम के लिए SPN को परिभाषित करने की आवश्यकता है। (विंडोज़ सपोर्ट टूल में सेट्सपीएन नामक टूल का उपयोग करके)

समर्थन उपकरण (SetSPN इस सेट में है) http://www.microsoft.com/downloads/details.aspx?FamilyID=96a35011-fd83-419d-939b-9a772ea2df90&DisplayLang=en

(एसपीएन कैसे जोड़ें का अवलोकन) http://technet.microsoft.com/en-us/library/bb735885.aspx

4) आपको अपना डीबी "भरोसेमंद" पर सेट करना पड़ सकता है

पर ध्यान दें विश्वसनीय पर सेट करें

5) आपके पास यह सब करने के बाद अपने उदाहरणों को पुनः आरंभ करें।

6) फिर अपने लिंक्ड सर्वर को फिर से बनाने का प्रयास करें।

अंत में आप SQL सर्वर से अपने कनेक्शन का परीक्षण कर सकते हैं। यदि आपके पास यह सब ठीक से कॉन्फ़िगर किया गया है तो यह ठीक काम करना चाहिए।

SELECT *
FROM OPENDATASOURCE('SQLNCLI',
    'Data Source=ServerB;Integrated Security=SSPI;'
    ).MASTER.dbo.syscolumns

यह आपको आपका कनेक्शन प्रमाणीकरण प्रकार बताएगा।

select auth_scheme from sys.dm_exec_connections where session_id=@@SPID

आप यहां BER केर्बोस ’प्राप्त करना चाहते हैं न कि 'एनटीएलएम’।

यह एक फिसलन ढलान है, केर्बोस और पास-थ्रू प्रतिनिधिमंडल, इसके साथ रहना और आप अंततः इसका पता लगा लेंगे।

संदर्भ केर्बरोस http://blogs.msdn.com/sql_protocols/archive/2005/10/12/479871.aspx

http://blogs.msdn.com/sql_protocols/archive/2006/12/02/understanding-kerberos-and-ntlm-authentication-in-sql-server-connections.aspx

http://blogs.iis.net/brian-murphy-booth/archive/2007/03/09/the-biggest-mistake-serviceprincipalname-s.aspx

समस्या की अन्य अभिव्यक्तियाँ http://www.sqlservercentral.com/Forums/Topic460425-359-1.aspx

http://msdn2.microsoft.com/en-us/library/aa905162(sql.80).aspx

http://msdn2.microsoft.com/en-us/library/ms189580.aspx

मुझे उम्मीद है कि यह सब मदद करेगा।


बहुत बढ़िया जवाब! यह निश्चित रूप से उस जानकारी के भार को संक्षेप में प्रस्तुत करता है जो अन्य जगहों पर उपयोगी रूप से व्यवस्थित नहीं है।
कांस्टेंटाइनके

3

यदि आप GUI के साथ अधिक सहज हैं, तो आप जुड़े सर्वर बनाने के लिए SQL सर्वर प्रबंधन स्टूडियो (SSMS) का भी उपयोग कर सकते हैं। ऐसा करने के लिए:

  1. SSMS लॉन्च करें और जिस SQL ​​सर्वर से आप लिंक करना चाहते हैं उसके एक उदाहरण से कनेक्ट करें
  2. ऑब्जेक्ट एक्सप्लोरर में "सर्वर ऑब्जेक्ट्स" का विस्तार करें
  3. "लिंक किए गए सर्वर" पर राइट क्लिक करें और "न्यू लिंक्ड सर्वर" चुनें
  4. "नए लिंक किए गए सर्वर" संवाद पर, "SQL सर्वर" को सर्वर प्रकार के रूप में चुनें और उस SQL ​​सर्वर की आवृत्ति दर्ज करें जिसे आप लिंक करना चाहते हैं।
  5. "सुरक्षा" पृष्ठ पर, चुनें कि उपयोगकर्ता वर्तमान सर्वर से लिंक किए गए सर्वर पर कैसे प्रमाणित करेंगे। आपने उल्लेख किया कि दोनों सर्वर विंडोज लॉगइन का उपयोग करने के लिए स्थापित हैं। यदि यह मामला है, "ऊपर दी गई सूची में परिभाषित नहीं लॉगिन के लिए" लेबल वाले अनुभाग के तहत , कनेक्शन होगा: " मैं शायद लेबल का विकल्प चुनूंगा " लॉगिन के वर्तमान सुरक्षा संदर्भ का उपयोग करके बनाया जाए "

ध्यान दें कि यह मानता है कि जिन उपयोगकर्ताओं के पास सर्वर A पर लॉगिन है उनके पास सर्वर B पर भी लॉगिन है।


1

मैं उसी समस्या के साथ पागल हो रहा हूँ! मुझे याद है कि 2000 के साथ ऐसा करना हमेशा आसान था। मैं पूरे गूगल पर रहा हूं और मुझे यह काम नहीं मिला। समान सेटअप, डोमेन अकाउंट पर चलने वाले दोनों सर्वर, विंडोज ऑक्टोर।

मैं टीसीपी के बजाय नामित पाइप का उपयोग करने की कोशिश कर रहा हूं और कम से कम मुझे एक अलग त्रुटि मिलती है:

EXEC sp_addlinkedserver 
    @server='statler', 
    @srvproduct='', 
    @provider='SQLNCLI', 
    @datasrc='np:statler', 
    @provstr='Integrated Security=SSPI'

-- Then I try this:
select net_transport, auth_scheme 
from statler.master.sys.dm_exec_connections 
where session_id=@@spid

/*

Getting closer, but still fails:

OLE DB provider "SQLNCLI" for linked server "statler" returned message 
    "Login timeout expired".
OLE DB provider "SQLNCLI" for linked server "statler" returned message 
    "An error has occurred while establishing a connection to the server. 
    When connecting to SQL Server 2005, this failure may be caused by the 
    fact that under the default settings SQL Server does not allow 
    remote connections.".
Msg 5, Level 16, State 1, Line 0
Named Pipes Provider: Could not open a connection to SQL Server [5]. 
OLE DB provider "SQLNCLI" for linked server "statler" returned message 
    "Invalid connection string attribute".

*/

यह नाम पाइप को सक्षम करने के साथ कुछ करने के लिए हो सकता है, लेकिन मैं sqlcmd के माध्यम से इस तरह से सर्वर बी से सर्वर बी से कनेक्ट कर सकता हूं:

WALDORF:>  Sqlcmd.exe /E /Snp:statler

अगर मैंने पाइप के नाम का उपयोग नहीं किया है, और बस करो:

New Linked Server
Server Type: SqlServer
Security: be made using the current login's security context

मैंने इसे प्राप्त किया:

Login failed for user NT AUTHORITY\ANONYMOUS LOGIN

[संपादित करें] मैंने इस बारे में एसक्यूएल सर्वर सेंट्रल पर एक चर्चा शुरू की। मूल रूप से, आपको यह काम करने के लिए कर्बरोस प्रतिनिधिमंडल से संबंधित कुछ जटिल कॉन्फ़िगरेशन करना होगा।

http://www.sqlservercentral.com/Forums/Topic574262-146-1.aspx

मैंने लिंक किए गए प्रश्नों को संभालने के लिए सिर्फ एक, सीमित Sql लॉगिन खाता बनाने का फैसला किया। मुझे उस का सहारा लेने से नफरत है, लेकिन यह उन बदलावों की तुलना में अधिक सुरक्षित है जो आपको इसे बनाने के लिए काम करना है।


जटिल केर्बरोस सेट-अप के लिए नीचे देखें। इस सामान ने मुझे लंबे, लंबे समय के लिए मार दिया है!
डेडमहोर

0

यदि आप sp_addlinkedserver और sp_linkedservers पर खोज करते हैं, तो आपको कुछ उदाहरण मिलते हैं। यह सेटअप करने के लिए बहुत सीधा है।


0

यदि आपके पास SQL ​​प्रबंधक है, तो आप इसके साथ GUI जोड़ सकते हैं।

मूल रूप से आपको दो सर्वरों को या तो SP द्वारा टिम द्वारा या GUI के माध्यम से लिंक करने की आवश्यकता है और फिर एक्सेस नियमों को सेट करें (यदि आपको दोनों सर्वरों पर Windows प्रमाणीकरण का उपयोग करने की आवश्यकता नहीं है)।


0

मुझे पता है कि यह आसान माना जाता है, लेकिन यह मेरे लिए बिल्कुल भी काम नहीं कर रहा है - मैं यहां सुरक्षा मुद्दों पर काम कर रहा हूं। इसलिए मैं चाहूंगा कि कोई मेरे लिए कदम बढ़ाए।

मैंने इसे SQL 2000 पर अतीत में बिना किसी समस्या के किया है।


0

तो आप उन्हें लिंक कर सकते हैं, लेकिन गलत खातों के कारण किसी क्वेरी को निष्पादित नहीं कर सकते हैं?

क्या आपके द्वारा उपयोग किए जाने वाले विंडोज़ उपयोगकर्ता के पास दोनों सर्वर पर डेटा पढ़ने के अधिकार हैं?

एक बार मुझे भी समस्या हुई थी क्योंकि "डेटा एक्सेस" संपत्ति किसी अज्ञात कारण से झूठी थी।

यह भी देखें कि यदि आप स्पष्ट रूप से लिंक के लिए एक उपयोगकर्ता को दूसरे उपयोगकर्ता के लिए सेट करते हैं तो क्या होता है।

(ये सभी SQL प्रबंधक में किए जा सकते हैं।)


0

टिम ने सटीक कदम पोस्ट किए हैं जो मैंने मान लिया था कि वे सही थे। चरण 5 सुरक्षा पृष्ठ है। मैं "लॉगिन के वर्तमान सुरक्षा संदर्भ का उपयोग करके बनाया गया" चुनता हूं।

जब मैं ठीक क्लिक करता हूं, तो मुझे निम्न त्रुटि मिलती है। मुझे नहीं पता कि यह 'एनटी प्राधिकरण' बेनामी लॉगिन का उपयोग करने की कोशिश क्यों कर रहा है। मैंने अपने डोमेन खाते के साथ अपने कार्य केंद्र में प्रवेश किया है जिसमें दोनों सर्वरों पर सभी अधिकार हैं।

TITLE: Microsoft SQL सर्वर प्रबंधन स्टूडियो

"लिंक किए गए सर्वर को बनाया गया है, लेकिन कनेक्शन परीक्षण में विफल रहा है। क्या आप लिंक किए गए सर्वर को रखना चाहते हैं?"

------------------------------ अतिरिक्त जानकारी:

Transact-SQL स्टेटमेंट या बैच निष्पादित करते समय एक अपवाद उत्पन्न हुआ। (Microsoft.SqlServer.ConnectionInfo)


उपयोगकर्ता 'NT AUTHORITY \ ANONYMOUS लोगो' के लिए लॉगिन विफल हुआ। (Microsoft SQL सर्वर, त्रुटि: 18456)

मदद के लिए: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.3068&EvtSrc=MSSQLServer&EvtID-18456&LinkId=20476


0

जब आप स्थानीय रूप से सर्वर पर लॉग इन होते हैं, तो ऐसा करने का प्रयास करें, यदि आप इसे रिमोट मशीन से करते हैं तो आप उचित क्रेडेंशियल्स नहीं भेज रहे हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.