রক্ষণাবেক্ষণ পরিকল্পনা কাজের ক্ষেত্রে কীভাবে স্থানীয় সার্ভার সংযোগ পরিবর্তন করা যায় বা আপডেট করা যায়


15

দু'দিন আগে আমাদের ক্লায়েন্টটি আমাদের একটি ডেভ সার্ভারের নাম পরিবর্তন করেছে

সার্ভার পুনঃনামকরণের পরে, আমার সমস্ত রক্ষণাবেক্ষণ কাজ এবং অন্যান্য কাজগুলি ব্যর্থ হচ্ছে কারণ সার্ভারের নামটি মেলে না।

আমরা স্ক্যুয়াল সার্ভার 2012 সংস্করণ এবং সার্ভার 2008 ওএস ব্যবহার করছি

তাই আজ সকালে আমি আমার এসকিউএল সার্ভার 2012 নাম পরিবর্তন করে দেওয়া নাম এবং টেবিল তৈরি, পদ্ধতি আপডেট

রক্ষণাবেক্ষণ কাজের ক্ষেত্রে আমি স্থানীয় সার্ভার সংযোগটি আপডেট করার চেষ্টা করেছি তবে এটি অযোগ্য। তারপরে আমি নতুন সার্ভার সংযোগ যুক্ত করেছি, তবুও কোনও ব্যবহার করার কারণে আমি ত্রুটি নীচে নেমে যাচ্ছি না, কাজগুলি চালানোর সময়।

আমি কাজের সম্পত্তি বিকল্পে লক্ষ্য পৃষ্ঠার সাথে চেষ্টা করার পরে, সেখানে কেবলমাত্র টার্গেট সার্ভারটি নির্বাচিত হয় এবং একাধিক টার্গেট সার্ভার অক্ষম হয়।

ত্রুটি নীচে

ব্যবহারকারী হিসাবে কার্যকর: এনটি পরিষেবা \ এসকিউএলএসআরএভারেন্ট। মাইক্রোসফ্ট (আর) এসকিউএল সার্ভার -৪-বিট কপিরাইট (সি) মাইক্রোসফ্ট কর্পোরেশনের জন্য প্যাকেজ ইউটিলিটি সংস্করণ 11.0.2100.60 সম্পাদন করুন। সমস্ত অধিকার সংরক্ষিত.
শুরু হয়েছে: 12:01:28 এএম ত্রুটি: 2013-12-16 00: 01: 43.98 কোড: 0xC00291EC উত্স: 10 410F7661-F71A-4B68-9584-BA422AB00F02 S এসকিউএল কার্য সম্পাদন
বিবরণ: সংযোগ অর্জন করতে ব্যর্থ হয়েছে "স্থানীয় সার্ভার সংযোগ" । সংযোগটি সঠিকভাবে কনফিগার করা যায় না বা আপনার এই সংযোগটিতে সঠিক অনুমতি থাকতে পারে। শেষ ত্রুটি
ত্রুটি: 2013-12-16 00: 02: 00.00
কোড: 0xC0024104
উত্স: টেরিটরি_ আপডেট
বর্ণনা: কার্যটিতে কার্যকর পদ্ধতিটি ত্রুটি কোড 0x80131904 ফেরত দিয়েছে (এসকিউএল সার্ভারের সাথে সংযোগ স্থাপনের সময় একটি নেটওয়ার্ক সম্পর্কিত বা উদাহরণ-নির্দিষ্ট ত্রুটি ঘটেছে The সার্ভারটি পাওয়া যায় নি বা অ্যাক্সেসযোগ্য নয়। যাচাইকরণের নামটি সঠিক কিনা তা যাচাই করুন এসকিউএল সার্ভার দূরবর্তী সংযোগের অনুমতি দেওয়ার জন্য কনফিগার করা হয়েছে provider (সরবরাহকারী: নামযুক্ত পাইপ সরবরাহকারী, ত্রুটি: 40 - এসকিউএল সার্ভারের সাথে সংযোগ খুলতে পারেনি)। এক্সিকিউট পদ্ধতিটি অবশ্যই সফল হবে এবং একটি "আউট" পরামিতি ব্যবহার করে ফলাফলটি নির্দেশ করবে। শেষ ত্রুটি
ত্রুটি: 2013-12-16 00: 02: 15.00
কোড: 0xC0024104
উত্স: E 4E2AF328-0B8D-4905-83BE-839FDDEFC09C}
বর্ণনা: কার্যটিতে কার্যকর পদ্ধতিটি ত্রুটি কোড 0x80131904 ফেরত দিয়েছে (এসকিউএল সার্ভারের সাথে সংযোগ স্থাপনের সময় একটি নেটওয়ার্ক সম্পর্কিত বা উদাহরণ-নির্দিষ্ট ত্রুটি ঘটেছে The সার্ভারটি পাওয়া যায় নি বা অ্যাক্সেসযোগ্য নয়। যাচাইকরণের নামটি সঠিক কিনা তা যাচাই করুন এসকিউএল সার্ভার দূরবর্তী সংযোগের অনুমতি দেওয়ার জন্য কনফিগার করা হয়েছে provider (সরবরাহকারী: নামযুক্ত পাইপ সরবরাহকারী, ত্রুটি: 40 - এসকিউএল সার্ভারের সাথে সংযোগ খুলতে পারেনি)। এক্সিকিউট পদ্ধতিটি অবশ্যই সফল হবে এবং একটি "আউট" পরামিতি ব্যবহার করে ফলাফলটি নির্দেশ করবে।
শেষ ত্রুটি ডিটিইজেসেক: প্যাকেজ সম্পাদনটি DTSER_FAILURE (1) প্রদান করেছে।
শুরু হয়েছে: 12:01:28 এএম
সমাপ্ত: 12:02:15 এএম
বিস্তৃত: 46.641 সেকেন্ড।
প্যাকেজ কার্যকর করা ব্যর্থ।
পদক্ষেপ ব্যর্থ হয়েছে।

এই ছেলেরা আমাকে সাহায্য করুন, অগ্রিম ধন্যবাদ


আমি একই সমস্যা পেয়েছি। পুনরুদ্ধার রক্ষণাবেক্ষণ পরিকল্পনা।
সারথি রেড্ডি

উত্তর:


14

রক্ষণাবেক্ষণ পরিকল্পনাগুলি এমএসডিবিতে সঞ্চিত এসএসআইএস প্যাকেজগুলি ব্যবহার করে। এই প্যাকেজগুলি সংযোগ স্ট্রিংগুলি ব্যবহার করে, যা কোনও সার্ভার নাম পরিবর্তনের পরে পরিবর্তিত হয় না।

স্ক্রিপ্ট (নীচের পুনরুত্পাদন) দ্বারা পোস্ট করা ব্যবহার করুন NancySon এর মন্তব্য পুনরায় নামকরণ হল একটি কম্পিউটার যা হোস্ট SQL সার্ভার এর Stand-Alone ইন্সটান্স: কিভাবে কিভাবে এই সংযোগ স্ট্রিং পরিবর্তন করতে সেই বিষয়ে কোনো অনুপ্রেরণার জন্য। বা রক্ষণাবেক্ষণ পরিকল্পনা পুনরায় তৈরি করুন।

রক্ষণাবেক্ষণ পরিকল্পনাগুলি তাদের সংযোগগুলি নতুন সার্ভারের নামের সাথে পরিবর্তিত হয় না এবং তাই তারা ভেঙে যেতে পারে। একটি নাম পরিবর্তনের পরে আপনি দেখতে পাবেন যে আপনি বিদ্যমান রক্ষণাবেক্ষণ পরিকল্পনাগুলি মুছতে বা নাম পরিবর্তন করতে পারবেন না, সুতরাং সার্ভারের নাম পরিবর্তন করার আগে সেগুলি মুছুন এবং পরে পুনরায় তৈরি করুন বা এগুলি ঠিক করতে নীচের স্ক্রিপ্টটি চালান:

   use msdb

   DECLARE @oldservername as varchar(max)
    SET @oldservername='<server name>\<instance name>'

   -- set the new server name to the current server name

   declare @newservername as varchar(max)
    set @newservername=@@servername

   declare @xml as varchar(max)
    declare @packagedata as varbinary(max)
    -- get all the plans that have the old server name in their connection string
    DECLARE PlansToFix Cursor
    FOR
    SELECT    id
    FROM         sysssispackages
    WHERE     (CAST(CAST(packagedata AS varbinary(MAX)) AS varchar(MAX)) LIKE '%server=''' + @oldservername + '%')

   OPEN PlansToFix


   declare @planid uniqueidentifier
    fetch next from PlansToFix into @planid

   while (@@fetch_status<>-1)  -- for each plan

   begin
    if (@@fetch_status<>-2)
    begin
    select @xml=cast(cast(packagedata as varbinary(max)) as varchar(max)) from sysssispackages where id= @planid  -- get the plan's xml converted to an xml string

   declare @planname varchar(max)
    select @planname=[name] from  sysssispackages where id= @planid  -- get the plan name
    print 'Changing ' + @planname + ' server from ' + @oldservername + ' to ' + @newservername  -- print out what change is happening

   set @xml=replace(@xml,'server=''' + @oldservername + '''','server=''' + @newservername +'''')  -- replace the old server name with the new server name in the connection string
    select @packagedata=cast(@xml as varbinary(max))  -- convert the xml back to binary
    UPDATE    sysssispackages SET packagedata = @packagedata WHERE (id= @planid)  -- update the plan

   end
    fetch next from PlansToFix into @planid  -- get the next plan

   end

   close PlansToFix
    deallocate PlansToFix
  ----- This will also handle the packages that have a tag such as 
    ----- <DTS:Property DTS:Name="ConnectionString">Data Source=servername;Integrated Security=SSPI;Connect Timeout=30;</DTS:Property>



   DECLARE @oldservername as varchar(max)
    SET @oldservername='<server name>\<instance name>'-- set the new server name to the current server name
    declare @newservername as varchar(max)
    set @newservername = @@servername
    declare @xml as varchar(max)
    declare @packagedata as varbinary(max)-- get all the plans that have the old server name in their connection string
    DECLARE PlansToFix Cursor FOR 
    SELECT id
    FROM sysssispackages
    WHERE (CAST(CAST(packagedata AS varbinary(MAX)) AS varchar(MAX)) LIKE '%Data Source=' + @oldservername + '%')

   OPEN PlansToFix
    declare @planid uniqueidentifier
    fetch next from PlansToFix into @planid 
    while (@@fetch_status<>-1) -- for each plan 
    begin
    if (@@fetch_status<>-2)
    begin
    select @xml=cast(cast(packagedata as varbinary(max)) as varchar(max)) 
    from sysssispackages where id= @planid -- get the plan's xml converted to an xml string
    declare @planname varchar(max)select @planname=[name] from sysssispackages where id= @planid -- get the plan name
    print 'Changing ' + @planname + ' server from ' + @oldservername + ' to ' + @newservername -- print out what change is happening
    set @xml=replace(@xml,'Data Source=' + @oldservername,'Data Source=' + @newservername) -- replace the old server name with the new server name in the connection string
    select @packagedata=cast(@xml as varbinary(max)) -- convert the xml back to binary
    UPDATE sysssispackages SET packagedata = @packagedata WHERE (id= @planid) -- update the plan
    end
    fetch next from PlansToFix into @planid -- get the next plan
    end
    close PlansToFix
    deallocate PlansToFix

3

আমি সার্ভার ফল্ট প্রশ্নের এই উত্তর থেকে এই কোডটি ব্যবহার করে একটি এসকিউএল সার্ভারটির নতুন নামকরণ করেছি, তবে রক্ষণাবেক্ষণের পরিকল্পনাগুলিতে এখনও পুরানো নাম রয়েছে :

SELECT  x.*,
        LocalServerConnectionString = cm.value('declare namespace DTS="www.microsoft.com/SqlServer/Dts";DTS:ObjectData[1]/DTS:ConnectionManager[1]/@DTS:ConnectionString', 'varchar(1000)')
FROM (
    SELECT  id, name, packageXML = CAST(CAST(packagedata AS VARBINARY(MAX)) AS XML)
    FROM dbo.sysssispackages
    WHERE id IN (SELECT id FROM dbo.sysmaintplan_plans)
) x
CROSS APPLY packageXML.nodes('declare namespace DTS="www.microsoft.com/SqlServer/Dts";/DTS:Executable/DTS:ConnectionManagers/DTS:ConnectionManager[@DTS:ObjectName="Local server connection"]') p(cm)

এবং নামকরণ করতে:

UPDATE dbo.sysssispackages SET packagedata = CAST(CAST(REPLACE(CAST(CAST(packagedata AS VARBINARY(MAX)) AS VARCHAR(MAX)), 'OldServerName', 'NewServerName') AS XML) AS VARBINARY(MAX))
WHERE id = 'package GUID'

1

আপনি যখন কোনও এসকিউএল সার্ভারের নাম পরিবর্তন করেন (যেমন উইন্ডোজ নেটবিআইওএস নাম পরিবর্তন করুন), আপনাকে অভ্যন্তরীণভাবে নামকরণের জন্য এসকিউএল সার্ভারের ভিতরেও এই ছোট্ট ম্যানুয়াল পদক্ষেপটি চালিয়ে নেওয়া দরকার। এই এমএসকেবি নিবন্ধে বিশদ ।


1

আমি জানি এটি একটি পুরানো থ্রেড / প্রশ্ন তবে আজ একই ধরণের সমস্যা ছিল এবং এটি উপরের স্ক্রিপ্টগুলি প্রয়োগ করে সমাধান করেছে, তাই আপনাকে ডার্ক এস0ুল ধন্যবাদ জানায়। এবং প্রক্রিয়াটিতে আমি এটি সমাধানের আরও একটি উপায় খুঁজে পেয়েছি: কাজের উত্সে সম্পাদনা করুন, ডেটা উত্সের অধীনে, স্থানীয় সার্ভার সংযোগটি পরীক্ষা করুন এবং ডেটা সোর্স = সার্ভারনেম অংশটি সম্পাদনা করুন। ও ভয়েলা!

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