Suser_name () AD खाता नाम परिवर्तन को प्रतिबिंबित क्यों नहीं करेगा?


10

हमारे उपयोगकर्ताओं के नामों में से एक को कानूनी रूप से बदल दिया गया था, इसलिए हमने अपने सक्रिय निर्देशिका उपयोगकर्ता नाम को मिलान के लिए बदल दिया - डोमेन \ oldname से domain \ newname तक। हालाँकि, जब suser_sname () को इस उपयोगकर्ता द्वारा संग्रहीत कार्यविधि में कहा जाता है, तो यह पुराना नाम लौटाता है, नया नहीं।

Googling ने मुझे KB 946358 के लिए नेतृत्व किया, जो बताता है कि उनका नाम सर्वर पर कैश किया जा रहा है और अपडेट नहीं किया गया है, संभवतः क्योंकि suser_name () LsaLookupSids को कॉल कर रहा है। हालाँकि, उस आलेख में वर्कअराउंड सर्वर को पुनरारंभ करना शामिल है, और यहां तक ​​कि अगर मैं चाहता था कि समस्या अभी भी समझना चाहते हैं।

अगर मैं उनके संदर्भ को बदल दूं, तो सही नाम वापस आ जाता है:

EXECUTE AS LOGIN = 'domain\newname'
GO
SELECT suser_name()   --returns 'domain\newname'

... मुझे लगता है कि यह भी LsaLookupSids फोन होगा, और इसलिए गलत नाम वापस आ जाएगी। ऐसा लगता है कि मुझे वास्तव में यहाँ काम के तंत्र की समझ नहीं है।

कुछ अवलोकन जो मायने रख सकते हैं:

  • इस उपयोगकर्ता के पास सर्वर पर एक स्पष्ट लॉगिन नहीं है। लेकिन वे एक एडी समूह के सदस्य हैं जो करता है। परिवर्तित नाम (डोमेन \ newname) के लिए निर्धारित परिणाम में प्रकट होता है exec xp_logininfo 'domain\ADGroupName', 'members'; डोमेन \ oldname नहीं करता है।

  • उपयोगकर्ता एक संग्रहित प्रक्रिया के भीतर suser_name () को कॉल कर रहा है, जिसे एक्सेस 2003 MDB में passthrough क्वेरी से बुलाया जाता है।

  • हमने पिछले समय में उपयोगकर्ताओं के खाते के बहुत सारे नाम बदल दिए हैं, लेकिन पिछले सप्ताह में केवल इस मुद्दे को देखा है (पिछले सप्ताह में दो बदलाव किए गए थे, दोनों इस मुद्दे को प्रदर्शित करते हैं)।

  • सर्वर Windows 2008 R2 Datacenter संस्करण पर Sql Server 2008 SP3 x64 चला रहा है।

क्या चल रहा है? डीबीए के रूप में, मैं क्या कर सकता हूं या मैं इसे हल करने के लिए कहां देख सकता हूं?


क्या MSSQLSERVER (या जो भी उदाहरण का नाम है) सेवा स्थानीय प्रणाली या एक वास्तविक लॉगिन के रूप में लॉगिंग है? मान को चलाते हुए खाते की रजिस्ट्री में कैश किया जा सकता है। आपके मामले में, आप लॉग इन थे और अनुरोध कर रहे थे। मैं सोच रहा हूं कि शायद आप SQL सर्वर को चलाने के लिए एक नियमित खाते का उपयोग कर रहे हैं (जैसा कि एक होना चाहिए) तो शायद SQL सर्वर पर "SQL सर्वर" लॉगिन के रूप में लॉग इन करें, फिर अपना EXECUTE ASऔर SELECT SUSER_NAME()परीक्षण चलाएं । इसके अलावा, क्या आपने SUSER_SNAME()100 अन्य विविधताओं में से कोई भी कोशिश की है ?
सोलोमन रटज़की

नए नाम का उपयोग करके उदाहरण पर एक लॉगिन बनाने का प्रयास करें। इससे उनकी अनुमति पर कोई प्रभाव नहीं पड़ेगा। भागो SUSER_SNAME(), यह उस बिंदु पर तय किया जाना चाहिए। फिर आप लॉगिन को छोड़ने का प्रयास कर सकते हैं और देख सकते हैं कि क्या यह नया नाम रखता है।
केनेथ फिशर

@srutzky यह एक डिफ़ॉल्ट MSSQLSERVER उदाहरण है जो एक डोमेन खाते के तहत चल रहा है। दुर्भाग्य से मेरे पास इसके साथ लॉग इन करने के लिए पासवर्ड नहीं है। मैंने उपयोगकर्ता के रूप में अभी तक suser_sname () की कोशिश नहीं की है, मेरा मानना ​​है कि यह suser_name () के समान है यदि कोई तर्क नहीं दिया गया है। यह एक कोशिश के लायक है - धन्यवाद!
योद्धा बॉब

1
SQL सर्वर SID द्वारा सभी खातों से मेल खाता है - चाहे SQL या डोमेन। चूंकि डोमेन SID सक्रिय निर्देशिका से आते हैं, इसलिए नाम बदलने से SID नहीं बदलता है। यदि यह कैश किया गया था, तो पुराना नाम वापस कर दिया जाएगा। यदि कोई लॉगिन पहले से मौजूद है, तो लॉगिन का नाम वापस आ जाएगा चाहे वह अभी भी वही नाम हो या नहीं, जब तक कि SIDs मेल नहीं खाता। यह डेटाबेस उपयोगकर्ताओं के लिए समान है।
सीन गेलार्डी

1
आप चलाने की कोशिश कर सकते हैं ipconfig /flushdnsऔर ipconfig /registerdnsएक कमांड लाइन से यदि समस्या है कि साफ करता है देखने के लिए।
RLF

जवाबों:


2

क्या यह केर्बरोस के साथ कैशिंग से संबंधित हो सकता है? (सिर्फ एक अनुमान है, हालांकि असंबंधित हो सकता है) http://blogs.technet.com/b/tspring/archive/2014/06/23/viewing-and-purging-cached-kerberos-tickets.aspx


1
मैं यह सुनिश्चित करने के लिए नहीं कह सकता कि यह मुद्दा है, लेकिन मेरा मानना ​​है कि यह या ऐसा ही कुछ है। सर्वर को रिबूट करना (जो अलग-अलग कारणों से हुआ) लगता है कि इसे साफ कर दिया गया है, कम से कम इस मामले के लिए। यह स्पष्ट नहीं है कि यह फिर से आएगा।
योद्धा बॉब

यह एक अच्छा सुझाव है, मुझे ऐसा सोचना चाहिए! :-) वही, जो हमने पहले किया था कि कैश्र के कैसरोस मुद्दों को साफ़ करने के लिए। खुशी है कि आप सफल थे!
नॉर्मो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.