কোন অজানা ডাটাবেস বুঝতে শুরু করতে হবে


12

সুতরাং, শিরোনামটি এটির যোগফল দেয়।

আমার কাছে একটি এসকিউএল সার্ভার ডাটাবেস রয়েছে যার সাথে ২৮ টি টেবিল এবং ৮ stored টি সঞ্চিত পদ্ধতি রয়েছে যা অবশ্যই বিপরীত ইঞ্জিনিয়ার করা উচিত। আমি নিশ্চিত যে কয়েকটি টেবিল কখনই ব্যবহার করা হয় না এবং সমস্ত প্রসও ব্যবহার হয় না।

সবচেয়ে বড় সমস্যাটি হ'ল যে সমস্ত উইন্ডোজ পরিষেবাদি যা এই ডিবি ব্যবহারের জন্য তৈরি হয়েছিল এবং সমস্ত সফ্টওয়্যার এবং ডাটাবেস নথি হারিয়ে গেছে এবং পুরো সিস্টেমটি ডিজাইন করেছে এমন ব্যক্তি কোথাও খুঁজে পাওয়া যায়নি।

সম্পর্কগুলি বুঝতে আমাকে সহায়তা করার জন্য আমি ইতিমধ্যে একটি ইআর ডায়াগ্রাম তৈরি করতে সক্ষম হয়েছি, তবে আমি ডাটাবেস প্রশাসনে অভিজ্ঞ নই, আমি কোথায় শুরু করব তা আমার ধারণা নেই।

এছাড়াও আমি দুঃখিত যদি এই ধরণের প্রশ্নটি এখানে জিজ্ঞাসা করা না হয়।


1
আমি অনুসরণ করি না আপনার কাছে ডিবিতে সম্পূর্ণ অ্যাক্সেস রয়েছে এবং আপনি জানেন যে রিভার্স ইঞ্জিনিয়ারের 86 টি স্টোর পদ্ধতি রয়েছে। সুতরাং এগুলি এনক্রিপ্ট করা স্টোরেজ প্রক্রিয়াগুলি? রিভার্সিং ইঞ্জিনিয়ারের ঠিক কী দরকার?
পাপারাজ্জো

হ্যাঁ সঠিক. আপনার প্রশ্নটি বোঝায়: ডিবি কাজ করছে, তবে এটি সম্পূর্ণ জগাখিচুড়ি। দুর্বল সূচকগুলি, ভুল ডেটা প্রকারগুলি, সাধারণীকরণ নয় এবং এগুলি সমস্ত খারাপ কর্মক্ষমতা হিসাবে যোগ হয় ... তবে এটি কার্যকর হয়।
হিউম্যান_এফটারএল

আপনি আবেগগতভাবে প্রস্তুতও হন তা নিশ্চিত করুন। আপনার চ্যালেঞ্জকে আলিঙ্গন করুন এবং গ্রহণ করুন। এটি করতে ব্যর্থ হওয়ায় আপনার পুরো যাত্রা মানসিক দ্বন্দ্ব ঘটাবে।
ক্রিশ্চিয়ান ওয়েস্টারবিইক

নিশ্চিত! টিপ জন্য ধন্যবাদ! সংবেদনশীল প্রস্তুতি সর্বাধিক (যদি না হয় তবে) গুরুত্বপূর্ণ পদক্ষেপগুলির মধ্যে একটি।
হিউম্যান_এফটারএল

উত্তর:


5

আপনাকে শুরু করার জন্য তিনটি খুব দ্রুত পদক্ষেপ:

1)

USE DatabaseName

SELECT    [TableName] = OBJECT_NAME(object_id),
last_user_update, last_user_seek, last_user_scan, last_user_lookup
FROM    sys.dm_db_index_usage_stats
WHERE    database_id = DB_ID('DatabaseName')

ক্লাস্টারড ইনডেক্স সহ প্রতিটি সূচক শেষবার ব্যবহার করার সময় আপনাকে জানাবে। কমপক্ষে কোনও সারণী অ্যাক্সেস করা হচ্ছে (এবং কোনটি নয়) তার জন্য আপনাকে স্বাদ দিন)

2) অ্যাপ্লিকেশনটি ব্যবহার করা হচ্ছে এমন সময় বা এক ঘন্টা বা তার জন্য প্রসারিত ইভেন্টস সেশনটি (বা আপনি যদি প্রাক-এসকিউএল 2012 চালাচ্ছেন তবে সার্ভার-সাইড প্রোফাইলার ট্রেস) চালু করুন। আপনি কোনও ব্যবহারকারীকে একটি নির্দিষ্ট ক্রমে অ্যাপ্লিকেশনটিতে বিভিন্ন ক্রিয়া সম্পাদন করতে বলতে পারেন যাতে আপনি এটি ট্রেস / সেশনের সাথে সম্পর্কিত করতে পারেন।

একটি সহায়ক পরামর্শ: আপনি যদি অ্যাপ্লিকেশনটি যে সংযোগের স্ট্রিংটি ব্যবহার করেন সেটিকে সংশোধন করতে পারেন তবে যোগ করুন "; অ্যাপ্লিকেশন নাম = অ্যাপনামগোজ এখানে" যাতে আপনি সেই নির্দিষ্ট অ্যাপ্লিকেশন নামের উপর একটি ট্রেস ফিল্টারিং চালাতে পারেন। যাইহোক ভাল অনুশীলন।

3) অ-উত্পাদক সার্ভারে কাজ করে অ্যাপ্লিকেশনটির একটি সংস্করণ পান। অ্যাপ্লিকেশনটির জন্য আচরণগত-চালিত পরীক্ষার একটি তালিকা বিকাশ করুন ("যখন ব্যবহারকারী নতুন আইটেম বোতামটি ক্লিক করে, তখন সে ব্যবহারকারীর জন্য একটি নতুন আইটেম তৈরি করে," ইত্যাদি) নকল মুছে ফেলা বস্তুগুলির নাম পরিবর্তন করে আপনার কোনও ফলশ্রুতি নেই বলে মনে করেন Begin (আমি অবজেক্টনাম_ডিপিআরসিএটিএইডিওয়াইওয়াইওয়াইএমডিডি-র মতো ফর্ম্যাট ব্যবহার করি - যে দিনটি আসলে আমি মুছে ফেলার পরিকল্পনা করি সেদিনের সাথে)) আপনার সমস্ত পরীক্ষার পুনরায় যাচাই করুন।

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

শুভকামনা!


7

আপনার সেরা বাজিটি এসকিউএল পাওয়ার ডক ব্যবহার করে আপনার ডাটাবেসটি নথিভুক্ত করা

উইন্ডোজ পাওয়ারশেল ব্যবহার করে এসকিউএল সার্ভার এবং উইন্ডোজ ডকুমেন্টেশন

এসকিউএল পাওয়ার ডক হ'ল উইন্ডোজ পাওয়ারশেল স্ক্রিপ্ট এবং মডিউলগুলির সংকলন যা এসকিউএল সার্ভারের উদাহরণগুলি এবং তাদের অন্তর্নিহিত উইন্ডোজ ওএস এবং মেশিন কনফিগারেশনগুলি আবিষ্কার করে, ডকুমেন্ট করে এবং সনাক্ত করে। এসকিউএল পাওয়ার ডকটি এসকিউএল সার্ভার ২০০০ থেকে ২০১৪ সালের মধ্যে এসকিউএল সার্ভারের সমস্ত সংস্করণ এবং উইন্ডোজ 2000 এবং উইন্ডোজ এক্সপি থেকে উইন্ডোজ এক্সপি এবং উইন্ডোজ এক্সপি এর সমস্ত সংস্করণ উইন্ডোজ সার্ভার 2012 আর 2 এবং উইন্ডোজ 8 এর সাথে কাজ করে। এসকিউএল পাওয়ার ডকটি সক্ষম উইন্ডোজ অ্যাজুরি এসকিউএল ডেটাবেস ডকুমেন্টিং।

দ্রষ্টব্য: আমি এটি ব্যবহার করেছি এবং এটি আপনাকে আপনার ডেটাবেস সার্ভারের উদাহরণটি ডকুমেন্টিং এবং বোঝার ক্ষেত্রে একটি দুর্দান্ত শুরু দেবে।


ধন্যবাদ। এটি নিশ্চিতভাবে এই জঘন্য ডিবি

হে! আমি পাওয়ারশেলের সাথে সত্যিই খারাপ এবং ফাইলটিতে New-Item -type directory -path "$([Environment]::GetFolderPath([Environment+SpecialFolder]::MyDocuments))\WindowsPowerShell\Modules"এই ধাপটি পাস করতে পারিনি SqlServerInventory ReadMe.txt। আমি সদ্য তৈরি হওয়া ফোল্ডারে যাওয়ার পথটি কোথায় সন্নিবেশ করানো উচিত এবং সদ্য নির্মিত ফোল্ডারের নামটি কোথায় সন্নিবেশ করানো উচিত তা আমি পাই না।
হিউম্যান_এফটারএল

3

যেহেতু আমি একবার একই পরিস্থিতিতে ছিলাম, আমি আপনাকে বলতে পারি যে এটি একটি কঠিন থেকে অসম্ভব কাজ হবে। আমার কাছে কেবল সোর্সকোড ছিল (> ​​কোডের 100k লাইন), চলমান পরিষেবা, চলমান ডাটাবেস (~ 50 টেবিল) এবং কোনও ডকুমেন্টেশন এবং এই অ্যাপ্লিকেশনটির ব্যবহারকারী এবং ডাটাবেস এবং সেবার চলমান পরিষেবাদির অনুলিপি ব্যতীত এ সম্পর্কে জিজ্ঞাসা করার জন্য কেউ নেই একটি পরীক্ষার পরিবেশ (যা সামনে কয়েকটি সংস্করণ সংখ্যা ছিল তবে সোর্সকোড ছাড়াই)। আর একটি প্রয়োজন ছিল পরিষেবাগুলি 24/7 চালাতে হয়েছিল কারণ তারা গ্রাহকদের বহিরাগত ছিল। পরিস্থিতি তৈরি হয়েছিল কারণ বেশিরভাগ কর্মী বিকাশকারীদের সহ প্রায় একই সময়ে চলে গিয়েছিল এবং নথিপত্র বিশৃঙ্খলায় নিখোঁজ হয়েছিল। মোটামুটি ওভারভিউ / ডকুমেন্টেশন পেতে 6 মাসেরও বেশি সময় লেগেছিল। অনেকগুলি টেবিল এবং ফাংশন ছিল যার কোন প্রভাব ছিল না কারণ সেগুলি ভবিষ্যতে ব্যবহারের জন্য ছিল বা পুরোপুরি কখনও প্রয়োগ করা হয়নি, ত্রুটিযুক্ত বা অবহেলা বা অপ্রকাশিত বৈশিষ্ট্যগুলি। 6 মাস পরে আমাকে ডকুমেন্টেশনটি আবার লিখতে হয়েছিল কারণ আমি নতুন জিনিস বা জিনিসের মধ্যে সম্পর্ক আবিষ্কার করেছি এবং এর আগে আমার ভুল অনুমান ছিল।

আমি এটা কেন বলছি? কারণ কখনও কখনও এমন পরিস্থিতিতে স্ক্র্যাচ থেকে শুরু করা এবং পুরানোটির প্রয়োজনীয়তা পূরণ করে একটি নতুন অ্যাপ্লিকেশন লিখতে সহজ (বা নতুন সময়ের সাথে সাথে তারা পরিবর্তিত হয় বা আপনি একটি নতুন বড় প্রকাশ চান) সহজেই সাশ্রয়ী হন। অথবা আপনাকে কী আশা করতে হবে তা জানাতে।

আপনি যদি সত্যিই এটির বিপরীত প্রকৌশলী করতে চান তবে আমি নিম্নলিখিত পদক্ষেপগুলি সুপারিশ করব:

  • পুরো সিস্টেমের একটি ব্যাকআপ করুন! (প্রথম: আপনার কখন এটির প্রয়োজন হবে তা আপনি কখনই জানতে পারবেন না Second দ্বিতীয়: পরবর্তী পদক্ষেপের জন্য আপনার এটি দরকার)
  • সিস্টেমটি (পরিষেবাদি এবং ডাটাবেস) এর সাথে কাজ করার জন্য একটি কপি পুনরায় তৈরি করুন এবং কীভাবে এটি তৈরি করবেন তা লিখুন কারণ পরবর্তী মাসগুলিতে আপনাকে অবশ্যই এটি একাধিকবার করতে হবে কারণ বিপরীত প্রকৌশলের সময় আপনি একাধিকবার গোলমাল করবেন engineering
  • টেবিলের মধ্যে নির্ভরতা সহ একটি ইআর-ডায়াগ্রাম তৈরি করুন
  • প্রতিটি সারণীর নির্ভরতা দেখুন এবং নথিবদ্ধ করুন, সঞ্চিত পদ্ধতি, ... কারণ এগুলি বেশিরভাগই ইআর-চিত্রগুলিতে অন্তর্ভুক্ত থাকে না
  • সফ্টওয়্যার ব্যবহারকারীদের জিজ্ঞাসা করে এবং এটি নিজেই ব্যবহার করে কী করা উচিত তা বুঝতে (পরীক্ষার সিস্টেমে এটি সেরা করুন)
  • যদি পরিষেবাদির সোর্সকোড উপলভ্য থাকে: এটির একটি সংক্ষিপ্ত বিবরণ পাবেন এবং ডিবি-তে কল করুন এবং এটি নথি করুন (ফাংশন কল হায়ারারচিগুলির সাথে মোটামুটি ডকুমেন্টেশন পাওয়ার জন্য ডক্সিজেনই ভাল সরঞ্জাম)
  • টেবিলের নাম এবং তাদের কলামগুলি দেখে ডিবি সম্পর্কে মোটামুটি ওভারভিউ পাওয়ার চেষ্টা করুন
  • এটি ব্যবহার করার সময় ডাটাবেস দেখুন
  • পূর্ববর্তী 4 টি পদক্ষেপের সাহায্যে 3 টি বিভাগে টেবিলগুলি বিভক্ত করা হয় (আপনার প্রয়োগের উপর নির্ভর করে আপনার জন্য পৃথক হতে পারে): স্ট্যাটিক ডেটা (সার্ভার কনফিগারেশনের মতো সার্ভার চালানোর সময় কোনও পরিবর্তন হয় না, বিদেশী কীগুলি ব্যবহার করে অন্যান্য টেবিলে বৈধ মানগুলিকে সীমাবদ্ধ করতে enums) , ...), কনফিগারেশন ডেটা (এমন ডেটা যা ব্যবহারকারীর সেটিংস, ...) এবং ওলটিপি ডেটা (চ্যাট সার্ভারে ব্যবহারকারীর বার্তা, ফোরামে পোস্টসমূহ, মেশিন নিয়ন্ত্রণ সিস্টেমে মেসোরিয়মেন্ট মান, একটি অনলাইন গেমের লড়াই) ...)
  • পূর্ববর্তী 5 টি পদক্ষেপ পুনরাবৃত্তি করুন যতক্ষণ না আপনি সন্তুষ্ট হন বা আপনি হাল ছাড়েন না
  • ডকুমেন্ট এবং কোড যেমন আপনার কোড / সিস্টেম / ডাটাবেস রক্ষণাবেক্ষণ শেষ করে সেই লোকটি হিংস্র মনোবিজ্ঞানী হবেন তিনি জানেন যে আপনি কোথায় থাকেন।

তোমার জন্য শুভ কামনা রইল ;)


1
-1, যে কেউ মনে করে যে কোনও বড় অ্যাপ্লিকেশনটির "স্ক্র্যাচ থেকে শুরু করে পুনরায় লিখন করা সহজ এবং সহজ" এটি আসলে কখনই করতে হয়নি। এটি অপেশাদার পরামর্শ।
নীলরাজ -

@ ব্লুরাজা-ড্যানিপ্লুঘুফুট এটি অ্যাপ্লিকেশনটির ধরণ, আকার এবং স্থিতি এবং পিছনের সামঞ্জস্যের প্রয়োজনীয়তার উপর নির্ভর করে। আমি প্রায় 100k এলওসি দিয়ে স্ক্র্যাচ থেকে একটি আবেদন আবার লিখেছি। আসলটি অনুকরণ করার প্রয়োজন ছিল না তবে এটি একটি নতুন প্রধান সংস্করণ হিসাবে প্রকাশিত হয়েছিল যার সাথে কয়েকটি নতুন ফাংশন যুক্ত হয়েছে, কিছু পুরানো ফাংশন সরানো হয়েছে, একটি আধুনিক ব্যবহারকারী ইন্টারফেস এবং পুরানো ডেটা ব্যবহার করার ক্ষমতা। আসল কোডটি এমন একটি বিশৃঙ্খলা ও সুরক্ষা বিপর্যয় ছিল যে আমরা পুরানো কোডটি পরিষ্কার করার জন্য অনুমান সময়ের চেয়ে দ্রুত ছিলাম।
এইচ এইডেন

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

2

আমার কাছে কোনও মন্তব্য পোস্ট করার মতো পর্যাপ্ত প্রতিনিধি নেই তবে আপনার প্রশ্ন সম্পর্কে সহায়তা করতে চেয়েছিলাম

getting the SQL Power Doc to work

আপনি যদি তাদের ডকুমেন্টেশন পৃষ্ঠার পদক্ষেপগুলি অনুসরণ করেন তবে এটি খুব সহজেই কাজ করবে। শুধু উপরে থেকে শুরু করুন।

https://sqlpowerdoc.codeplex.com/wikipage?title=Guide%20For%20PowerShell%20Beginners

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