আমরা আমাদের এসকিউএল সার্ভারটি প্রতিস্থাপনের প্রক্রিয়াধীন এবং সিদ্ধান্ত নিয়েছি যে সার্ভারটির নতুন নামকরণের পরিবর্তে অন্য সব কিছুর পরিবর্তে একটি নতুন নাম দেখানো অনেক সহজ হয়ে যাবে। আমরা দেখতে পাচ্ছি এমন কম্পিউটারের নামের সাথে মিল রাখার জন্য এসকিউএল সার্ভার উদাহরণ নামটি পরিবর্তন করার জন্য নির্দেশাবলী পেয়েছি:
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' এর নিকটে ভুল সিনট্যাক্স।
এটিকে আরও সহজেই পুনরায় ব্যবহারযোগ্য করে তুলতে আমি খুব সহজেই নতুন সার্ভারের নামটি স্ক্রিপ্টে হার্ডকোড না করতে চাই। কেউ ধারণা পেয়েছেন?