SQL सर्वर का नाम बदलना


10

हम अपने SQL सर्वर को बदलने की प्रक्रिया में हैं और यह तय किया है कि सर्वर का नाम बदलना खुद को नया नाम इंगित करने के लिए बाकी सब कुछ बदलने की तुलना में बहुत आसान होने जा रहा है। हमने कंप्यूटर के नाम से मेल खाने के लिए SQL सर्वर इंस्टेंस नाम को बदलने के निर्देश दिए जो इस तरह दिखते हैं:

sp_dropserver 'OLDSERVER'
sp_addserver 'NEWSERVER', local

हालांकि SQL एंटरप्राइज मैनेजर उन लोगों को एक साथ पसंद नहीं करता है। मुझे इसे एक साथ काम करने के लिए निम्न में बदलना पड़ा:

sp_dropserver 'OLDSERVER'; GO
sp_addserver 'NEWSERVER', 'local'; GO

जो बुरा नहीं है, लेकिन मैं चीजों को अधिक स्वचालित होना पसंद करूंगा। चूंकि @@ ServerName उदाहरण का नाम देता है, मुझे पता चला कि पहली पंक्ति को कैसे स्वचालित किया जाए:

sp_dropserver @@ServerName; GO

मैंने यह भी सीखा कि SERVERPROPERTY ('ServerName') को कंप्यूटर का नाम वापस करना है, इसलिए मैंने सोचा कि मैं शायद इसका उपयोग दूसरे भाग को स्वचालित करने के लिए करूं, लेकिन यह काम नहीं किया:

sp_addserver SERVERPROPERTY('ServerName'), 'local'; GO

मैंने एक चर सेट करने की कोशिश की, जिसे मुझे एसक्यूएल एजेंट नौकरियों को अपडेट करने के लिए वैसे भी करने की आवश्यकता है, लेकिन यह काम नहीं किया:

DECLARE @srv sysname;
SET @srv = CAST(SERVERPROPERTY('ServerName') AS sysname);
sp_addserver @srv, 'local'; GO

'Sp_addserver' के पास गलत सिंटैक्स।

मैं बहुत आसानी से स्क्रिप्ट में नए सर्वर नाम को हार्डकोड नहीं करना चाहूंगा, ताकि इसे और अधिक आसानी से पुन: प्रयोज्य बनाया जा सके। किसी को कोई विचार मिला?


1
आप sp_addserver से पहले EXEC जोड़ सकते हैं और देख सकते हैं कि क्या यह मदद करता है?
शंकर रेड्डी

इससे काम बन गया। :)
स्कॉट

जवाबों:


6

यहाँ एक स्क्रिप्ट है जो आप चाहते हैं:

DECLARE @var1 nvarchar(50)
DECLARE @var2 nvarchar(50)
SET @var1 = convert(nvarchar(50),@@SERVERNAME)
SET @var2 = convert(nvarchar(50),SERVERPROPERTY('MachineName'))
EXEC sp_dropserver @var1
EXEC sp_addserver @var2, 'local'
GO

क्रेडिट: http://www.myitforum.com/articles/5/view.asp?id=4983


1
लगभग, लेकिन @ var1 को छोड़ दिया जाना चाहिए और @ var2 को जोड़ा गया। @@ ServerName SQL सर्वर आवृत्ति का नाम देता है, जबकि SERVERPROPERTY ('MachineName') कंप्यूटर का नाम लौटाता है।
स्कॉट

1

मैग्मा और शंकर रेड्डी की मदद से, यहाँ समाप्त स्क्रिप्ट है:

DECLARE @var1 nvarchar(50)
DECLARE @var2 nvarchar(50)
SET @var1 = convert(nvarchar(50),@@SERVERNAME)
SET @var2 = convert(nvarchar(50),SERVERPROPERTY('MachineName'))
EXEC sp_dropserver @var1
EXEC sp_addserver @var2, 'local'
UPDATE msdb.dbo.sysjobs SET originating_server = @var2
GO

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


-3
Declare @OldName varchar(50),
        @NewName Varchar(50)

Select @OldName = CONVERT(VARCHAR(50),@@SERVERNAME) ;
--SELECT @OldName [OLDNAME]
Select @NewName =  CONVERT(VARCHAR(50),SERVERPROPERTY('ServerName'));
--SELECT @NewName [NEWNAME]

EXEC sp_dropserver @OldName;
EXEC sp_addserver @server = '@NewName',@local='local';
GO

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