কোনও পুনঃস্থাপন ডেটাবেসের ইভেন্টের পরে স্বয়ংক্রিয়ভাবে সঞ্চিত প্রক্রিয়াটি চালান


9

এসকিউএল সার্ভার 2008 আর 2 স্ট্যান্ডার্ডটি পুনরুদ্ধার করা বা দৃষ্টান্তের সাথে সংযুক্ত কোনও ডাটাবেসে স্বয়ংক্রিয়ভাবে কোনও সঞ্চিত প্রক্রিয়া চালানো সম্ভব ?

আমি একটি সার্ভার লেভেল ট্রিগার তৈরি করে একটি সমাধানের কাছাকাছি এসেছি যা ডিডিএল ইভেন্টের পরে প্রদত্ত ডেটাবেসে একটি সঞ্চিত পদ্ধতি কার্যকর করে CREATE_DATABASEবা ALTER_DATABASEবরখাস্ত করা হয়। দুর্ভাগ্যক্রমে, এটি ডেটাব্যাক ব্যাকআপ পুনরুদ্ধারের জন্য কাজ করে না।

বিশদভাবে বলতে গেলে, আমাদের পুনরুদ্ধার করা প্রতিটি ডাটাবেসে বিদ্যমান একটি 'ক্লিন আপ' সঞ্চিত প্রক্রিয়া রয়েছে এবং যখনই কোনও ব্যাকআপ পুনরায় পুনরুদ্ধার করা হবে তখনই স্বয়ংক্রিয়ভাবে এটি কার্যকর করার একটি উপায় আমি সন্ধান করছি।

গুগলিং আমাকে এই কার্যকারিতাটি পেতে এসকিউএল সার্ভারে নিরীক্ষণ বা নীতিগুলি কনফিগার করার দিকে ইঙ্গিত করেছে , তবে এই বৈশিষ্ট্যগুলি প্রথম নজরে বেশ অপ্রতিরোধ্য, সুতরাং অডিট বা পলিসগুলি তদন্ত শুরু করার উপায় কিনা তা আমি বলতে পারি না।

উত্তর:


10

এটি পুনরুদ্ধার শেষ হওয়ার সাথে সাথেই কার্যকর করতে হবে, বা এটি সংক্ষেপে বিলম্বিত হতে পারে? আমার একটি ধারণা ছিল প্রতি মিনিটে চলে এমন একটি চাকরি এবং Audit Backup/Restore Eventডিফল্ট ট্রেসটির জন্য পরীক্ষা করা ।

DECLARE @fn VARCHAR(MAX);

SELECT @fn = SUBSTRING([path], 0, LEN([path])-CHARINDEX(CHAR(92), REVERSE([path]))+1) 
  + CHAR(92) + 'Log.trc'  
FROM sys.traces   
WHERE is_default = 1;  

SELECT 
    DatabaseName,
    StartTime, 
    TextData
FROM sys.fn_trace_gettable(@fn, DEFAULT)  
WHERE EventClass = 115
AND TextData LIKE '%RESTORE%'; -- since can't differentiate between backup/restore

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


1
খুব চতুর, ভাল চিন্তা। +1
থমাস স্ট্রিংগার

সামান্য বিলম্ব গ্রহণযোগ্য হবে। আমি এটি চেষ্টা করে যাচ্ছি।
ম্যাথু রুস্টন

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

6

database_started এক্সটেন্ডেড ইভেন্ট পর একটি ডাটাবেস পুনঃস্থাপিত হলে বহিস্কার করা হয়।

এমন একটি ইভেন্ট সেশন তৈরি করুন যা database_idক্ষেত্রের জন্য %RESTORE%সন্ধান করে এমন একটি শিকারী দিয়ে ক্ষেত্রটি ক্যাপচার করবে sql_text(দ্রষ্টব্য: আমি বিশ্বাস করি এটি যথেষ্ট) - আপনি নিজের পরীক্ষা করতে চাইবেন)।

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


4

আপনি যেমন ডিডিএল ইভেন্টের তালিকাটি দেখতে পাচ্ছেন , আপনার প্রয়োজনের জন্য একটি ডিডিএল ট্রিগার যথেষ্ট পরিমাণে সুস্পষ্ট হতে পারে না।

পুনরুদ্ধার বা সংযুক্তি করার জন্য আমি পাওয়ারশেল স্ক্রিপ্টটি লেখার পরামর্শ দেব এবং তারপরে অবিলম্বে স্টোর করা পদ্ধতিটি সম্পাদন করব। মনে মনে, আপনার দোকানটিকে সাধারণ পুনরুদ্ধার বা সংযুক্তির পরিবর্তে এটি ব্যবহার করার জন্য নির্দেশ দিতে হবে।

দুর্ভাগ্যক্রমে আমি বিশ্বাস করি না এটি সম্পন্ন করার জন্য একটি অন্তর্নির্মিত উপায় আছে।


4

আপনি কীভাবে আপনার ব্যাকআপগুলি চালাচ্ছেন? আপনি যদি ব্যাকআপের পরে এসপি চালানোর জন্য সন্ধান করছেন তবে আপনি এটিকে কাজের অন্য কোনও কাজ হিসাবে সেট করতে পারেন, যদি আপনি সেগুলি ব্যবহার করছেন বা রক্ষণাবেক্ষণের পরিকল্পনা।

সুতরাং আপনি ইভেন্ট লগে লিখতে অডিটিং সেট আপ করতে পারেন এবং তারপরে একটি সতর্কতা তৈরি করতে পারেন যা কোনও কাজ কার্যকর করবে। এটি বিশৃঙ্খলাযুক্ত বলে মনে হচ্ছে তবে এটি যা চাইবে তা করবে।

নিম্নলিখিত কোডটি একবার দেখুন:

--Create the Server Audit
USE master
GO
CREATE SERVER AUDIT BackupTrap
TO APPLICATION_LOG
WITH (QUEUE_DELAY = 0, ON_FAILURE = CONTINUE)
GO

--Turn the Audit On
ALTER SERVER AUDIT BackupTrap
WITH (STATE = ON)
GO

--Create the Database Audit Specification
USE AdventureWorks2012
GO
CREATE DATABASE AUDIT SPECIFICATION BackupTrapAdventureWorks
FOR SERVER AUDIT BackupTrap
    ADD (BACKUP_RESTORE_GROUP)
WITH (STATE = ON)
GO

--Create the job to run
USE msdb
GO
EXECUTE dbo.sp_add_job
    @job_name = N'BackupAlertJob'
GO

EXECUTE dbo.sp_add_jobserver
    @job_name = N'BackupAlertJob'
GO

EXECUTE dbo.sp_add_jobstep
    @job_name = N'BackupAlertJob',
    @step_name = N'RunSP',
    @subsystem = N'TSQL',
    @command = N'EXECUTE dbo.MyStoredProcedure',
    @database_name = N'AdventureWorks2012'
GO

একটি পুনরুদ্ধার কাজ যা এটি ধারণ করে এটি একটি ভাল ধারণা। যাইহোক, আমি আশ্চর্য হয়েছি যে ওপি "কোনও" পুনরুদ্ধার ইভেন্ট ক্যাপচার করতে চায় এমন একটি সম্পূর্ণ সমাধান কিনা।
নিক চাম্মাস

কোনও পুনরুদ্ধার ইভেন্ট সম্পূর্ণ হওয়ার পরে একটি নির্বিচারে সঞ্চিত প্রক্রিয়া সম্পাদন করতে সক্ষম হওয়াই আসলে আমাদের পরে। তবুও একটি বৈধ পরামর্শ।
ম্যাথু রুস্টন

আমি আমার দ্বিতীয় উত্তরটি সরিয়েছি এবং তথ্য অন্তর্ভুক্ত করতে উপরেরটি সম্পাদনা করেছি। এই টিপটির জন্য @ শর্ককে ধন্যবাদ সম্পূর্ণরূপে এটি সম্পর্কে ভাবেনি।
jgardner04

0

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

আমার বিশ্বাস নেটব্যাকআপ অন্যান্য পণ্যগুলিরও একই রকম কার্যকারিতা থাকতে পারে

আপনি যদি এসকিউএল ব্যবহার করেন, কেবল এটি ডেটাবেস পুনরুদ্ধার করে এমন একটি কাজের পদক্ষেপ হিসাবে এটি যুক্ত করুন

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