একটি এসকিউএল সার্ভারের নতুন নাম স্বয়ংক্রিয়করণ


10

আমরা আমাদের এসকিউএল সার্ভারটি প্রতিস্থাপনের প্রক্রিয়াধীন এবং সিদ্ধান্ত নিয়েছি যে সার্ভারটির নতুন নামকরণের পরিবর্তে অন্য সব কিছুর পরিবর্তে একটি নতুন নাম দেখানো অনেক সহজ হয়ে যাবে। আমরা দেখতে পাচ্ছি এমন কম্পিউটারের নামের সাথে মিল রাখার জন্য এসকিউএল সার্ভার উদাহরণ নামটি পরিবর্তন করার জন্য নির্দেশাবলী পেয়েছি:

sp_dropserver 'OLDSERVER'
sp_addserver 'NEWSERVER', local

যদিও এসকিউএল এন্টারপ্রাইজ ম্যানেজার তাদের একসাথে পছন্দ করে নি। এটি এক সাথে কাজ করার জন্য আমাকে এটি নীচে পরিবর্তন করতে হয়েছিল:

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

যা খারাপ নয়, তবে আমি জিনিসগুলিকে আরও বেশি স্বয়ংক্রিয় হওয়ার জন্য পছন্দ করব। যেহেতু @@ সার্ভারনাম উদাহরণটির নামটি দেয়, আমি প্রথম লাইনটি কীভাবে স্বয়ংক্রিয় করতে হবে তা আবিষ্কার করেছি:

sp_dropserver @@ServerName; GO

আমি আরও জানতে পেরেছি যে সার্ভারপ্র্টি ('সার্ভারনাম') কম্পিউটারের নামটি ফেরত দেওয়ার কথা, তাই আমি ভেবেছিলাম যে আমি সম্ভবত এটি দ্বিতীয় অংশটি স্বয়ংক্রিয়ভাবে ব্যবহার করতে পারব, তবে এটি কার্যকর হয়নি:

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 যুক্ত করা উচিত। @@ সার্ভারনাম এসকিউএল সার্ভারের উদাহরণটি দেয়, যখন সার্ভারপ্রপ্টি ('মেশিননাম') কম্পিউটারটির নাম দেয়।
স্কট

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

ম্যাগমা যে নিবন্ধটি খুঁজে পেয়েছিল তাতে এতে একটি ছোট ত্রুটি ছিল, এটি হ'ল এটি পুরানো নামটি ফেলে দিয়ে নতুন নাম যুক্ত করার পরিবর্তে নতুন নামটি ফেলে নতুন নাম যুক্ত করার চেষ্টা করছিল। এসকিউএল এজেন্ট কাজ ঠিক করতে আমি একটি আপডেট ক্যোয়ারী যুক্ত করেছি। মনে রাখবেন যে এটি কেবলমাত্র বহু-সার্ভার পরিবেশে মাস্টার সার্ভারের বিরুদ্ধে সঠিকভাবে কাজ করে। আমার পরিবেশটি একক-সার্ভার পরিবেশ, তাই এটি আমার পরিস্থিতির জন্য কাজ করে।


-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

অন্যান্য (গৃহীত) উত্তরগুলি কীভাবে এটি আলাদা?
সোভেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.