SQL सर्वर 2008 R2: कंप्यूटर नाम परिवर्तन के बाद समस्याएँ


10

स्थानीय SQL सर्वर आवृत्ति होस्ट करने वाले दूरस्थ सर्वर का कंप्यूटर नाम बदलने के बाद मुझे एक भ्रमित समस्या हो रही है।

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

डेटाबेस को क्लाइंट सॉफ्टवेयर द्वारा ठीक से कनेक्ट किया जा सकता है, और मैं सीधे SQL सर्वर में लॉग इन कर सकता हूं। हालाँकि, मेरी SQL सर्वर एजेंट नौकरियों में से एक विफल रहता है, घटना लॉग में एक त्रुटि के साथ:

SQL सर्वर शेड्यूल की गई नौकरी 'नाइटली रीसेट' (0x4F76FDFFF6DFFE4EA0DE4A70252AD3BD) - स्थिति: विफल - 2012-02-07 08:10:05 - संदेश: कार्य विफल रहा। यह निर्धारित करने में असमर्थ कि नौकरी के मालिक (साइट -19 \ एडमिन) नाइटली रिसेट का सर्वर एक्सेस (कारण) है: Windows NT समूह / उपयोगकर्ता 'साइट -19 \ व्यवस्थापक', त्रुटि कोड 0x534 के बारे में जानकारी प्राप्त नहीं कर सका। [SQLSTATE 42000 () त्रुटि 15404))।

अब, 'साइट -19' कंप्यूटर का पुराना नाम है, जिसे बदल दिया गया है, और सर्वर को रीसेट कर दिया गया है। मैं नए साइट नंबर 'साइट -28' का उपयोग करके मैन्युअल रूप से कनेक्ट करता हूं, और यह मुझे साइट -28 \ व्यवस्थापक के साथ SQL सर्वर से जुड़ा होने के रूप में दिखाता है। हालाँकि, जब मैं एजेंट की नौकरी के गुणों को देखता हूं, तो यह स्वामी को साइट -19 \ व्यवस्थापक के रूप में दिखाता है, और जब मैं इसे बदलने के लिए उपयोगकर्ताओं के लिए ब्राउज़ करने का प्रयास करता हूं, तो साइट -28 \ व्यवस्थापक विकल्प के रूप में दिखाई नहीं देता है। , केवल साइट -19 \ व्यवस्थापक। यदि मैं इस एक से एक नई नौकरी की स्क्रिप्ट करता हूं और मालिक को 'साइट -28 \ व्यवस्थापक' में बदल देता हूं, तो नई नौकरी स्वामी 'साइट -19 \ व्यवस्थापक' के साथ बनाई जाती है।

Sys.servers (या sp_helpserver के माध्यम से) में देख रहे हैं, मेरे पास केवल एक प्रविष्टि है: वर्तमान कंप्यूटर नाम। हालाँकि, SELECT @@ SERVERNAME मूल विकास मशीन नाम (दो नाम पहले परिवर्तन) लौटाता है।

संक्षेप में, मैं इस महत्वपूर्ण SQL सर्वर एजेंट कार्य को नहीं चला सकता क्योंकि यह उस उपयोगकर्ता का है जो अब मौजूद नहीं है, और मैं यह पता नहीं लगा सकता कि इसे कैसे बदला जाए या इसे सही उपयोगकर्ता के रूप में बनाया जाए।


लिंक के लिए धन्यवाद। आपके सुझाव पर, मैंने इसे वहाँ भी पूछा। मुझे लगता है कि यह यहाँ भी मान्य है, साथ ही साथ प्रश्न अधिक बुनियादी ढाँचा-संबंधी होने के बावजूद, उत्तर में कोड की बहुत संभावना होगी, और यहाँ SQL सर्वर पद्धति के बहुत सारे प्रश्न भी हैं।
जियो ईगो

और यदि आप सर्वर 'साइट -28' को छोड़ देते हैं तो क्या होता है? Sp_helpserver क्या प्रदर्शित करता है? क्या आप केवल पुरानी नौकरी नहीं हटा सकते हैं और नया बना सकते हैं?

1
दिलचस्प रूप से पर्याप्त है, जब मैं 'साइट -28' को छोड़ने का प्रयास करता हूं, तो यह मुझे बताता है कि यह नहीं पाया जा सकता है। जब मैं इसे जोड़ने का प्रयास करता हूं, तो यह कहता है कि यह पहले से मौजूद है। यदि मैं कार्य नया बनाता हूं, चाहे वह विज़ार्ड के माध्यम से या मूल से स्क्रिप्टिंग कर रहा हो, तो वह हमेशा स्वामी के रूप में 'साइट -19 \ व्यवस्थापक' के साथ इसे बनाता है।
जियो ईगो

इसलिए पुराने, भौतिक सर्वर को एक नया नाम सौंपा गया था (और यह परिवर्तन भी DNS में किया गया था) और नामांकित बॉक्स पर @@ SERVERNAME का चयन करके अपना नया नाम लौटाता है?
14:01 पर jl01

1
मैंने स्थानांतरित प्रश्न को इस में मिला दिया, इसलिए सभी उत्तर समेकित हैं।
jcolebrand

जवाबों:


7

जब आपने sp_addserver का उपयोग करके नया सर्वर नाम जोड़ा, तो क्या आपको "स्थानीय" पदनाम को शामिल करना याद था। यह वह टैग है जो @@ SERVERNAME के ​​मेटाडेटा को अपडेट करता है। अधिक जानकारी।

sp_addserver 'servername', local

बस एक ध्यान दें कि @@ServerNameजब तक मैं एसक्यूएल सर्वर को पुनः आरंभ अद्यतन नहीं किया
फिएट

7

मुझे इसका जवाब कल मेरे एक दोस्त की मदद से मिला। मुझे उस SSMS के माध्यम से लॉग इन करना था जिसमें विंडोज लॉगिन के अलावा एक उपयोगकर्ता था जिसका मैं उपयोग करने का प्रयास कर रहा था, पुराने लॉगिन को हटा दें और फिर से अपना विंडोज लॉगिन जोड़ें। उसके बाद, मैं नौकरी के स्वामित्व को ठीक से स्थानांतरित करने में सक्षम था, SQL विंडोज से उपयोगकर्ता डेटा प्राप्त करने में सक्षम था, और सभी दुनिया के साथ सही था।


मैंने इसे लागू किया और @ ब्रायन-नाइट का जवाब। Db ओनरशिप बदलने के लिए, मैंने इसका उपयोग किया SELECT 'use ' + DB_NAME(database_id) + ';EXEC sp_changedbowner ''sa'';' FROM sys.databases where DB_NAME(database_id) like 'MyDbs%';। उसके बाद मैं खराब लॉगन को छोड़ने में सक्षम था
fiat

4

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

declare @currentName as nvarchar(128)
declare @newName as varchar(max)
declare @serverName as varchar(max)
declare @serverInstance as varchar(max)

select  @currentName = @@SERVERNAME
select @serverInstance = cast(serverproperty('InstanceName') as varchar(max))
select  @serverName = cast(serverproperty('MachineName') as varchar(max))

set @newName = @serverName

if (@serverInstance <> '') 
begin
      set @newName = @serverName + '\' + @serverInstance
end

if (@currentName <> @newName)
Begin
      print 'sp_dropserver ''' + @currentName + '''';
      print 'go'
      print 'sp_addserver ''' + @newName + ''',local'
      print 'go'
end
else
Print 'ALL OK'

उस स्क्रिप्ट का उपयोग करते हुए, मैं यह पहचानने में सक्षम था कि मुझे पुराने सर्वर नाम को मैन्युअल रूप से ड्रॉप करने और नया जोड़ने की आवश्यकता है। मैंने ऐसा किया, लेकिन मुझे अभी भी वही समस्याएं हैं।
जियो ईगो

क्या आपने उदाहरण को पुनः आरंभ किया?

हाँ, उदाहरण बाद में फिर से शुरू किया गया था।
जियो ईगो

सॉरी यार गाउट बो आउट, यकीन नहीं होता कि समस्या क्या हो सकती है।

0

एक समान समस्या थी: एक कंप्यूटर के होस्टनाम को बदल दिया जहां SQL सर्वर और SQL सर्वर एजेंट चल रहा है। नौकरियां सौंपी गईं। इस नए अस्थायी उपयोगकर्ता / ड्रॉप का उपयोग करके SSMS को एक अस्थायी उपयोगकर्ता / लॉगऑन बनाने के बाद और लॉगिन नाम (सार्वजनिक और sysadmin निजी!) बनाएँ / इस पुन: बनाई गई नौकरियों को पुनः असाइन करें लॉगिन सब कुछ ठीक था। हो सकता है कि आप उसी परिवर्तन को प्रतिबिंबित करने के लिए सिस्टम टेबल में हेरफेर कर सकते हों; लेकिन इससे ऊपर का तरीका उतना जोखिम भरा नहीं है।

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