ভার্চুয়ালিং এসকিউএল সার্ভার ডাটাবেস


315

আমি আমার ডাটাবেসগুলি সংস্করণ নিয়ন্ত্রণে পেতে চাই। আমাকে শুরু করার জন্য কারও কাছে কি কোনও পরামর্শ বা প্রস্তাবিত নিবন্ধ রয়েছে?

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


এই সাদা কাগজটি একবার দেখুন; ডেটাবেস সংস্করণ নিয়ন্ত্রণের সংজ্ঞা www3.dbmaestro.com/…
ডিবিএস্টেপ

উত্তর:


179

মার্টিন ফোলার এই বিষয়টিতে আমার প্রিয় নিবন্ধটি লিখেছিলেন, http://martinfowler.com/articles/evodb.html । আমি alumb এবং অন্যরা পরামর্শ হিসাবে সংস্করণ নিয়ন্ত্রণে স্কিমা ডাম্প না রাখার পছন্দ করি কারণ আমি আমার উত্পাদন ডেটাবেস আপগ্রেড করার একটি সহজ উপায় চাই।

এমন একটি ওয়েব অ্যাপ্লিকেশনের জন্য যেখানে আমার একক উত্পাদন ডাটাবেস উদাহরণ থাকবে, আমি দুটি কৌশল ব্যবহার করি:

ডাটাবেস আপগ্রেড স্ক্রিপ্ট

একটি সিকোয়েন্স ডাটাবেস আপগ্রেড স্ক্রিপ্ট যা স্কিমাটি N থেকে N + 1 সংস্করণে সরানোর জন্য প্রয়োজনীয় ডিডিএল ধারণ করে। (এটি আপনার সংস্করণ নিয়ন্ত্রণ সিস্টেমে চলে go) একটি _ রূপান্তর_ ইতিহাস_ টেবিল, এর মতো কিছু

create table VersionHistory (
    Version int primary key,
    UpgradeStart datetime not null,
    UpgradeEnd datetime
    );

প্রতিবার একটি আপগ্রেড স্ক্রিপ্ট চললে একটি নতুন এন্ট্রি আসে যা নতুন সংস্করণের সাথে মিলে যায়।

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

বিকাশকারী স্যান্ডবক্স সিঙ্ক্রোনাইজেশন

  1. ব্যাকআপ, স্যানিটাইজ এবং একটি ডেটাবেস সংকোচনের জন্য একটি স্ক্রিপ্ট। প্রযোজনা ডিবিতে প্রতিটি আপগ্রেড করার পরে এটি চালান।
  2. বিকাশকারীর ওয়ার্কস্টেশনে ব্যাকআপটি পুনরুদ্ধার করার জন্য একটি স্ক্রিপ্ট (এবং যদি প্রয়োজন হয় তবে সরে যাওয়া)। প্রতিটি বিকাশকারী প্রতিটি স্ক্রিনটি ডিবিতে আপগ্রেড করার পরে এই স্ক্রিপ্টটি চালায়।

একটি সতর্কতামূলক: আমার স্বয়ংক্রিয় পরীক্ষাগুলি স্কিমা-সঠিক তবে খালি ডাটাবেসের বিরুদ্ধে চলে, সুতরাং এই পরামর্শটি আপনার প্রয়োজনের সাথে পুরোপুরি খাপ খায় না।


16
সম্পূর্ণ স্কিমা স্ক্রিপ্টগুলি নিয়ন্ত্রণ করা সংস্করণ উল্লেখের জন্য খুব দরকারী useful উদাহরণস্বরূপ, ALTER PROCEDURE বিবৃতিটি দেখে স্টোর করা পদ্ধতিতে ঠিক কী পরিবর্তন হয়েছিল তা দেখা অসম্ভব।
কনস্টান্টিন

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

2
আপনি কি উত্স নিয়ন্ত্রণে আপগ্রেড স্ক্রিপ্টগুলি রেখেছেন তা বলছেন, বাদাম সেখানে রোলব্যাক রাখে না?
একে

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

1
@ নিকক.আর.গুজের উত্তর, আরও অটোমেশনের জন্য পোস্ট কমিট হুক।
সিলভিউ-মেরিয়ান

45

রেড গেটের এসকিউএল পণ্য তুলনা করে না শুধুমাত্র আপনাকে অবজেক্ট-স্তরের তুলনা করতে পারে এবং সেখান থেকে পরিবর্তন স্ক্রিপ্ট তৈরি করতে দেয়, তবে এটি আপনাকে আপনার ডাটাবেস অবজেক্টগুলিকে ফোল্ডারের শ্রেণিবিন্যাসে একটি [অবজেক্টনেস] .এসকিএল সৃষ্টি দ্বারা রফতানি করার অনুমতি দেয় s এই ডিরেক্টরিতে প্রতি বস্তু স্ক্রিপ্ট। অবজেক্ট-টাইপ হায়ারার্কিটি এরকম:

\ ক্রিয়াকলাপগুলি
\ সুরক্ষা
\ সুরক্ষা \ ভূমিকা
\ সুরক্ষা \ স্কিমাস
\ সুরক্ষা \ ব্যবহারকারীগণ
সঞ্চিত পদ্ধতি
\ টেবিলগুলি

আপনি যদি পরিবর্তনগুলি করার পরে আপনি যদি আপনার স্ক্রিপ্টগুলি একই মূল ডিরেক্টরিতে ডাম্প করেন তবে আপনি এটি আপনার এসভিএন রেপো আপডেট করতে এবং পৃথকভাবে প্রতিটি বস্তুর চলমান ইতিহাস রাখতে পারেন।


6
আমরা সবেমাত্র এসকিউএল সোর্স কন্ট্রোল প্রকাশ করেছি, যা এসকিউএলকে আপনার এসএসএমএসে বর্ণিত আচরণের সাথে তুলনা করে এবং এসভিএন এবং টিএফএসের লিঙ্কগুলিকে একীভূত করে। আমি এই প্রশ্নের পৃথক উত্তর যুক্ত করেছি যা এটি কী করে তার আরও বিশদে বর্ণনা করে। red-gate.com/products/SQL_Source_Control/index.htm
ডেভিড অ্যাটকিনসন

39

আশেপাশের উন্নয়নের এটি একটি "কঠিন সমস্যা"। যতদূর আমি জানি কোনও সঠিক সমাধান নেই।

আপনার যদি কেবল ডাটাবেস কাঠামো সঞ্চয় করতে হয় এবং ডেটা নয় তবে আপনি এসকিউএল কোয়েরি হিসাবে ডাটাবেসটি রফতানি করতে পারেন। (এন্টারপ্রাইজ ম্যানেজারে: ডাটাবেসে ডান ক্লিক করুন -> এসকিউএল স্ক্রিপ্ট তৈরি করুন I অপশন ট্যাবে আমি "প্রতি বস্তুতে একটি ফাইল তৈরি করুন" সেট করার পরামর্শ দিই) আপনি তখন এই পাঠ্য ফাইলগুলিকে এসএনএন করতে বাধ্য করতে পারেন এবং এসএনএন এর ডিফ এবং লগিং ফাংশনগুলি ব্যবহার করতে পারেন।

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

আপনার যদি সমস্ত ডেটা পাশাপাশি রাখার প্রয়োজন হয় তবে আমি তুলনা করতে ডাটাবেসটির ব্যাক আপ রাখার এবং রেডগেট ( http://www.red-gate.com/ ) পণ্য ব্যবহার করার পরামর্শ দিচ্ছি । তারা সস্তা আসে না, তবে তারা প্রতিটি পয়সা মূল্যবান।


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

1
যদি আপনি "প্রতি বস্তুর জন্য একটি ফাইল" বিকল্পটি ব্যবহার করেন তবে কী অর্ডারটি ডাটাবেস স্ক্রিপ্টগুলি চালাবেন?
জ্যামি কিটসন

@ টাচম্যান: ডেটাগ্রোভ এসকিউএল সার্ভারকে সমর্থন করে বলে মনে হয় না এবং যেমন প্রশ্নের সাথে কোনও প্রাসঙ্গিকতা নেই।
নিওলিস্ক

38

প্রথমত, আপনাকে অবশ্যই সংস্করণ নিয়ন্ত্রণ সিস্টেমটি চয়ন করতে হবে যা আপনার জন্য সঠিক:

  • সেন্ট্রালাইজড ভার্সন কন্ট্রোল সিস্টেম - একটি স্ট্যান্ডার্ড সিস্টেম যেখানে ব্যবহারকারীরা ফাইলগুলিতে কাজ করার আগে / পরে চেক আউট করে থাকেন এবং ফাইলগুলি একটি একক কেন্দ্রীয় সার্ভারে রাখা হয়

  • ডিস্ট্রিবিউটেড ভার্সন কন্ট্রোল সিস্টেম - এমন একটি সিস্টেম যেখানে সংগ্রহস্থলটি ক্লোন করা হচ্ছে, এবং প্রতিটি ক্লোনই হ'ল সংগ্রহস্থলের সম্পূর্ণ ব্যাকআপ, সুতরাং যদি কোনও সার্ভার ক্র্যাশ হয়ে যায়, তবে আপনার প্রয়োজনের জন্য সঠিক সিস্টেমটি বেছে নেওয়ার পরে কোনও ক্লোনড সংগ্রহস্থল এটি পুনরুদ্ধার করতে ব্যবহার করা যেতে পারে , আপনাকে প্রতিলিপিটি সেটআপ করতে হবে যা প্রতিটি সংস্করণ নিয়ন্ত্রণ ব্যবস্থার মূল বিষয় যা নীচের নিবন্ধে এই সমস্ত ব্যাখ্যা করা হয়েছে: http://solutioncenter.apexsql.com/sql-server-source-control-part-i- বোঝার -source নিয়ন্ত্রণ-মূলসূত্র /

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

  • এমএসএসসিসিআই সরবরাহকারীর মাধ্যমে এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিও,

  • ভিজ্যুয়াল স্টুডিও এবং এসকিউএল সার্ভার ডেটা সরঞ্জামসমূহ

  • একটি তৃতীয় পক্ষের সরঞ্জাম অ্যাপেক্সএসকিউএল উত্স নিয়ন্ত্রণ

24

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

মাইগ্রেশন-ভিত্তিক পদ্ধতির জন্য (স্বয়ংক্রিয় মোতায়েনের জন্য আরও উপযুক্ত), আমরা অফার করি এসকিউএল চেঞ্জ অটোমেশন (পূর্বে রেডিআরল নামে পরিচিত) যা ভিজ্যুয়াল স্টুডিও প্রকল্প হিসাবে বর্ধিত স্ক্রিপ্টগুলির সেট এবং পরিচালনা করে।

এসকিউএল উত্স নিয়ন্ত্রণে স্থির ডেটা টেবিলগুলি নির্দিষ্ট করা সম্ভব। এগুলি ইনসার্ট স্টেটমেন্ট হিসাবে উত্স নিয়ন্ত্রণে সংরক্ষণ করা হয়।

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


আকর্ষণীয় পণ্য (বাজারের কিছুটা ব্যবধান) তবে ডেল্টাস "ক্রিয়েট ..." হিসাবে সঞ্চিত আমাকে ভয় দেখান। আপনি কিভাবে শাখা / মার্জ করছেন?
অনাকাটা

1
আমরা অবজেক্টের সংজ্ঞাগুলি ক্রিয়েট হিসাবে সঞ্চয় করি তবে আপনি যদি 'সর্বশেষ' হন বা উদাহরণস্বরূপ, সিঙ্ক স্ক্রিপ্টগুলি তৈরি করতে এসকিউএল তুলনা প্রো ব্যবহার করেন, তবে এগুলি ALTER এর মতো উপযুক্ত কমান্ডে পরিবর্তিত হয়। শাখা বা মার্জ করতে আপনি কেবল আপনার উত্স নিয়ন্ত্রণ ব্যবস্থাটি বর্তমানে যেমন করেন তেমনভাবে ব্যবহার করতে চান।
ডেভিড অ্যাটকিনসন

এই উত্তরটি দুবছর আগে পোস্ট করা ডেনের উত্তরটির সদৃশ।
ওয়ান্ডার ওয়ার্কার

এটি একটি ভিন্ন উত্তর। এসকিউএল তুলনা সংস্করণ নিয়ন্ত্রণ ডাটাবেসগুলি না করে, এসকিউএল উত্স নিয়ন্ত্রণটি বিশেষভাবে এর জন্য ডিজাইন করা হয়েছিল।
ডেভিড অ্যাটকিনসন

21

আপনি লিকুইবেস ( http://www.liquibase.org/ ) দেখতে চাইতে পারেন । এমনকি যদি আপনি নিজে নিজে এই সরঞ্জামটি ব্যবহার না করেন তবে এটি ডাটাবেস পরিবর্তন পরিচালনার ধারণা বা রিফ্যাক্টরিংয়ের ধারণাগুলি পরিচালনা করে।


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

আমি যদি পরিচয়ের উপর ভিত্তি করে সঠিকভাবে বুঝতে পারি তবে এসকিউএল এর পরিবর্তে আপনার কিছু জিনিস মালিকানা xML ভাষা জানা উচিত? পাখা নয়।
জেডিপিচাম

19

রেডগেট সরঞ্জামগুলির জন্য অতিরিক্ত সুপারিশ এবং একটি সতর্কতার সাথে পরামর্শ দেওয়া প্রত্যেকের জন্য +1।

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

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


সুতরাং এমন একটি সিস্টেম থাকা উচিত যা আপনি কোন কলামগুলি পরিবর্তন করছেন তা ট্র্যাক করে এবং পুরানো কলামের নামগুলি থেকে নতুন কলামের নামগুলিতে ম্যাপিংগুলি মনে রাখে।
সিলভারকোড

এটি মনে রাখা মূল্যবান যে ডাটাবেস পরিবর্তনের জন্য যেগুলির দ্ব্যর্থতা রয়েছে (এবং সুতরাং "বিকাশকারী উদ্দেশ্য" এর একটি উপাদান প্রয়োজন), একটি স্থানান্তর-ভিত্তিক সমাধান হ'ল উপযুক্ত সমাধান। রেডগেটে এখন রেডি রোল রয়েছে যা এই সংস্করণ পদ্ধতির সন্তুষ্ট করে।
ডেভিড অ্যাটকিনসন

15

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


আমি 10 বছর ধরে ডিবিঘস্ট ব্যবহার করেছি এবং এটি কখনই আমাকে হতাশ করে না। তারা যে সমর্থন দেয় তা
কোনওোটার পরে

15

ভিএস 2010 এর সাথে, ডেটাবেস প্রকল্পটি ব্যবহার করুন।

  1. আপনার ডাটাবেস স্ক্রিপ্ট
  2. স্ক্রিপ্টগুলিতে বা সরাসরি আপনার ডিবি সার্ভারে পরিবর্তন করুন
  3. ডেটা> স্কিমা তুলনা করে সিঙ্ক আপ করুন

একটি নিখুঁত ডিবি সংস্করণ সমাধান তৈরি করে এবং ডিবি'র বাতাসকে সিঙ্ক করে তোলে।


2
হ্যাঁ তবে দুর্ভাগ্যক্রমে আপনার মনে রাখতে হবে প্রতিবার "স্ক্রিপ্ট উত্পন্ন করা"। আপনি যদি সরাসরি ডাটাবেস আপডেট করেন তবে আপনি সেই ব-দ্বীপের জন্য আপডেট স্ক্রিপ্ট তৈরি করার ক্ষমতা হারাবেন। যদি কেবল ডাটাবেস প্রকল্পগুলিতে সংস্করণের জন্য কিছু বিল্ট-ইন কার্যকারিতা থাকে।
জেজ

13

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

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

ডাটাবেস মেটাডেটা পরিচালনা করার জন্য স্বয়ংক্রিয় সরঞ্জামটির অর্থ থাকা উচিত, যা কোন ডেটাবেসগুলি কোন অবস্থার বিকাশে থাকে এবং কোন টেবিলগুলিতে সংস্করণ নিয়ন্ত্রণযোগ্য ডেটা থাকতে পারে তা বোঝায়।


12

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

আমি বর্তমানে ডিবিইউপি ব্যবহার করছি , এবং এটি ভালভাবে কাজ করছে।


11

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

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

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


10

প্রতিটি ডাটাবেস উত্স-কোড নিয়ন্ত্রণের মধ্যে থাকা উচিত। যা অভাব তা হ'ল একটি ডাটাবেস যা সমস্ত ডাটাবেস অবজেক্টগুলিতে - এবং "কনফিগারেশন ডেটা" - ফাইল করার জন্য স্বয়ংক্রিয়ভাবে স্ক্রিপ্ট করা যায়, যা পরে কোনও উত্স নিয়ন্ত্রণ সিস্টেমে যুক্ত করা যায়। আপনি যদি এসকিউএল সার্ভার ব্যবহার করে থাকেন তবে আমার সমাধানটি এখানে রয়েছে: http://dbsourcetools.codeplex.com/ । আনন্দ কর. - নাথান


9

ইহা সাধারণ.

  1. বেস প্রকল্পটি প্রস্তুত হওয়ার পরে আপনাকে অবশ্যই সম্পূর্ণ ডাটাবেস স্ক্রিপ্ট তৈরি করতে হবে। এই স্ক্রিপ্টটি এসভিএন-তে প্রত্যাবর্তিত হয়েছে। এটি প্রথম সংস্করণ।

  2. এর পরে সমস্ত বিকাশকারী পরিবর্তন স্ক্রিপ্ট তৈরি করে (ALTER ..., নতুন সারণী, স্প্রোকস, ইত্যাদি)।

  3. আপনার যখন বর্তমান সংস্করণ দরকার তখন আপনার সমস্ত নতুন স্ক্রিপ্টগুলি পরিবর্তন করা উচিত।

  4. অ্যাপ্লিকেশনটি যখন উত্পাদনে প্রকাশিত হয় তখন আপনি 1 এ ফিরে যান (তবে তারপরে এটি অবশ্যই ধারাবাহিক সংস্করণ হবে)।

ন্যান্ট আপনাকে সেই পরিবর্তনগুলির স্ক্রিপ্টগুলি কার্যকর করতে সহায়তা করবে। :)

এবং মনে রাখ. শৃঙ্খলা থাকলে সবকিছু ঠিকঠাক কাজ করে। প্রতিবার যখন ডাটাবেস পরিবর্তন করা হয় তখন কোডে সংশ্লিষ্ট ফাংশনগুলিও কমিট হয়।


2
কয়েক বছর পরে আমি বলছি: ফ্লুয়েন্টমিগ্রেটর (বা আপনার প্ল্যাটফর্মের জন্য অনুরূপ সরঞ্জাম) ব্যবহার করুন।
dariol

8

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

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


8

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

সেটআপ: প্রতিবারের ডাটাবেজে একটি টেবিল তৈরি করুন যা আপনি শেষবার যাচাই করেছেন (প্রথম রানেই খালি) থেকে সংস্করণ তথ্য ধরে রাখতে ক্রমবর্ধমান যাচাই করতে চান। আপনি যদি আপনার পুরো ডেটা স্ট্রাকচারটি আবার স্ক্যান করতে চান তবে এই টেবিলটি সাফ করুন।

IF ISNULL(OBJECT_ID('last_run_sysversions'), 0) <> 0 DROP TABLE last_run_sysversions
CREATE TABLE last_run_sysversions (
    name varchar(128), 
    id int, base_schema_ver int,
    schema_ver int,
    type char(2)
)

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

IF ISNULL(OBJECT_ID('tempdb.dbo.#tmp'), 0) <> 0 DROP TABLE #tmp
CREATE TABLE #tmp (
    name varchar(128), 
    id int, base_schema_ver int,
    schema_ver int,
    type char(2)
)

SET NOCOUNT ON

-- Insert the values from the end of the last run into #tmp
INSERT #tmp (name, id, base_schema_ver, schema_ver, type) 
SELECT name, id, base_schema_ver, schema_ver, type FROM last_run_sysversions

DELETE last_run_sysversions
INSERT last_run_sysversions (name, id, base_schema_ver, schema_ver, type)
SELECT name, id, base_schema_ver, schema_ver, type FROM sysobjects

-- This next bit lists all differences to scripts.
SET NOCOUNT OFF

--Renamed.
SELECT 'renamed' AS ChangeType, t.name, o.name AS extra_info, 1 AS Priority
FROM sysobjects o INNER JOIN #tmp t ON o.id = t.id
WHERE o.name <> t.name /*COLLATE*/
AND o.type IN ('TR', 'P' ,'U' ,'V')
UNION 

--Changed (using alter)
SELECT 'changed' AS ChangeType, o.name /*COLLATE*/, 
       'altered' AS extra_info, 2 AS Priority
FROM sysobjects o INNER JOIN #tmp t ON o.id = t.id 
WHERE (
   o.base_schema_ver <> t.base_schema_ver
OR o.schema_ver      <> t.schema_ver
)
AND  o.type IN ('TR', 'P' ,'U' ,'V')
AND  o.name NOT IN ( SELECT oi.name 
         FROM sysobjects oi INNER JOIN #tmp ti ON oi.id = ti.id
         WHERE oi.name <> ti.name /*COLLATE*/
         AND oi.type IN ('TR', 'P' ,'U' ,'V')) 
UNION

--Changed (actually dropped and recreated [but not renamed])
SELECT 'changed' AS ChangeType, t.name, 'dropped' AS extra_info, 2 AS Priority
FROM #tmp t
WHERE    t.name IN ( SELECT ti.name /*COLLATE*/ FROM #tmp ti
         WHERE NOT EXISTS (SELECT * FROM sysobjects oi
                           WHERE oi.id = ti.id))
AND  t.name IN ( SELECT oi.name /*COLLATE*/ FROM sysobjects oi
         WHERE NOT EXISTS (SELECT * FROM #tmp ti
                           WHERE oi.id = ti.id)
         AND   oi.type  IN ('TR', 'P' ,'U' ,'V'))
UNION

--Deleted
SELECT 'deleted' AS ChangeType, t.name, '' AS extra_info, 0 AS Priority
FROM #tmp t
WHERE NOT EXISTS (SELECT * FROM sysobjects o
                  WHERE o.id = t.id)
AND t.name NOT IN (  SELECT oi.name /*COLLATE*/ FROM sysobjects oi
         WHERE NOT EXISTS (SELECT * FROM #tmp ti
                           WHERE oi.id = ti.id)
         AND   oi.type  IN ('TR', 'P' ,'U' ,'V'))
UNION

--Added
SELECT 'added' AS ChangeType, o.name /*COLLATE*/, '' AS extra_info, 4 AS Priority
FROM sysobjects o
WHERE NOT EXISTS (SELECT * FROM #tmp t
                  WHERE o.id = t.id)
AND      o.type  IN ('TR', 'P' ,'U' ,'V')
AND  o.name NOT IN ( SELECT ti.name /*COLLATE*/ FROM #tmp ti
         WHERE NOT EXISTS (SELECT * FROM sysobjects oi
                           WHERE oi.id = ti.id))
ORDER BY Priority ASC

দ্রষ্টব্য: আপনি যদি আপনার কোনও ডাটাবেসে একটি মানক না করে মান ব্যবহার করেন তবে আপনাকে /* COLLATE */আপনার ডাটাবেস কল্যাশনের সাথে প্রতিস্থাপন করতে হবে । অর্থাতCOLLATE Latin1_General_CI_AI


8

আমাদের অ্যাপ্লিকেশনটিকে একাধিক আরডিবিএমএস জুড়ে কাজ করার কারণে, আমরা ডাটাবেস-নিরপেক্ষ টর্ক বিন্যাস (এক্সএমএল) ব্যবহার করে সংস্করণ নিয়ন্ত্রণে আমাদের স্কিমা সংজ্ঞা সংরক্ষণ করি । আমরা নিম্নলিখিত হিসাবে XML ফর্ম্যাটে আমাদের ডাটাবেসগুলির জন্য রেফারেন্স ডেটা সংস্করণ-নিয়ন্ত্রণ করি (যেখানে "সম্পর্ক" একটি রেফারেন্স সারণীর মধ্যে একটি):

  <Relationship RelationshipID="1" InternalName="Manager"/>
  <Relationship RelationshipID="2" InternalName="Delegate"/>
  etc.

এরপরে আমরা স্কিমা আপগ্রেড এবং রেফারেন্স ডেটা আপগ্রেড স্ক্রিপ্টগুলি উত্পন্ন করতে গৃহ-প্রাপ্ত সরঞ্জামগুলি ব্যবহার করি যা ডাটাবেসের X সংস্করণ থেকে X + 1 সংস্করণে যেতে হয়।


7

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


7

আমরা একটি এক্স 64 প্ল্যাটফর্মে স্থানান্তরিত হওয়ার পরে এবং আমাদের পুরানো সংস্করণটি মাইগ্রেশনের সাথে ভেঙে যাওয়ার পরে আমাদের এসকিউএল ডাটাবেসটির সংস্করণ করার দরকার ছিল। আমরা একটি সি # অ্যাপ্লিকেশন লিখেছিলাম যা এসকিউএলডিএমও ব্যবহার করে সমস্ত ফাইলে এসকিউএল অবজেক্ট তৈরি করতে পারে:

                মূল
                    সার্ভার নাম
                       databasename
                          স্কিমা অবজেক্টস
                             ডাটাবেস ট্রিগার *
                                .ddltrigger.sql
                             ক্রিয়াকলাপ
                                ..function.sql
                             নিরাপত্তা
                                ভূমিকা
                                   প্রয়োগের ভূমিকা
                                      .approle.sql
                                   ডাটাবেস ভূমিকা
                                      .role.sql
                                স্কীমাস *
                                   .schema.sql
                                ব্যবহারকারীরা
                                   .user.sql
                             সংগ্রহস্থল
                                সম্পূর্ণ পাঠ্য ক্যাটালগ *
                                   .fulltext.sql
                             সঞ্চিত পদ্ধতি
                                ..proc.sql
                             প্রতিশব্দ *
                                .synonym.sql
                             টেবিল
                                ..table.sql
                                সীমাবদ্ধতাসমূহ
                                   ... chkconst.sql
                                   ... defconst.sql
                                ইনডেক্সে
                                   ... index.sql
                                কী
                                   ... fkey.sql
                                   ... pkey.sql
                                   ... ukey.sql
                                ট্রিগারসমূহ
                                   ... trigger.sql
                             প্রকারভেদ
                                ব্যবহারকারী-সংজ্ঞায়িত ডেটা প্রকার
                                   ..uddt.sql
                                এক্সএমএল স্কিমা সংগ্রহ *
                                   ..xmlschema.sql
                             দেখেছে
                                ..view.sql
                                ইনডেক্সে
                                   ... index.sql
                                ট্রিগারসমূহ
                                   ... trigger.sql

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


ওহ, এটি সর্বজনীনভাবে উপলব্ধ করা দুর্দান্ত হবে।
ক্রিস চরবারুক

7

আমি এই অ্যাপ্লিকেশনটি কিছুক্ষণ আগে লিখেছিলাম, http://sqlschemasourcectrl.codeplex.com/ যা আপনার এমএসএফটি এসকিউএল ডিবি'র যতবার ইচ্ছা স্ক্যান করবে এবং স্বয়ংক্রিয়ভাবে আপনার অবজেক্টগুলিকে (টেবিল, ভিউ, প্রোস, ফাংশন, এসকিএল সেটিংস) এসভিএন-তে ফেলে দেবে। একটি যাদুমন্ত্র মত কাজ করে. আমি এটি আনফুডল (যা আমাকে চেকিনগুলিতে সতর্কতা পেতে অনুমতি দেয়) দিয়ে ব্যবহার করি


6

সাধারণ সমাধানটি হ'ল ডাটাবেসটিকে প্রয়োজনীয় হিসাবে ডাম্প করা এবং সেই ফাইলগুলিকে ব্যাকআপ করা।

আপনার বিকাশ প্ল্যাটফর্মের উপর নির্ভর করে ওপেনসোর্স প্লাগইন উপলব্ধ থাকতে পারে। এটি করার জন্য আপনার নিজের কোডটি ঘূর্ণায়মানটি মোটামুটি তুচ্ছ।

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


6

আমরা সবেমাত্র টিম ফাউন্ডেশন সার্ভার ব্যবহার শুরু করেছি। যদি আপনার ডাটাবেসটি মাঝারি আকারের হয় তবে ভিজ্যুয়াল স্টুডিওতে তুলনা, উপাত্ত তুলনা, ডাটাবেস রিফ্যাক্টরিং সরঞ্জাম, ডাটাবেস পরীক্ষার কাঠামো এবং এমনকি ডেটা জেনারেশন সরঞ্জামগুলির সাথে কিছু দুর্দান্ত প্রকল্পের সংহত রয়েছে।

তবে, এই মডেলটি খুব বড় বা তৃতীয় পক্ষের ডেটাবেসগুলিতে (যে এনক্রিপ্ট করা অবজেক্টগুলি) খুব ভাল ফিট করে না। সুতরাং, আমরা যা করেছি তা হ'ল কেবল আমাদের কাস্টমাইজড অবজেক্টগুলি সঞ্চয় করা। ভিজ্যুয়াল স্টুডিও / টিম ফাউন্ডেশন সার্ভার এটির জন্য খুব ভাল কাজ করে।

টিএফএস ডাটাবেস প্রধান খিলান। ব্লগ

এমএস টিএফএস সাইট


6

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

কিছু প্রকল্প বৈশিষ্ট্য:

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

কোডটি গুগল কোডে হোস্ট করা হয়। আরও কিছু তথ্যের জন্য দয়া করে গুগল কোডটি দেখুন

http://code.google.com/p/databaseversioncontrol/


5

কিছুক্ষণ আগে আমি একটি ভিবি বেস মডিউল পেয়েছি যা একটি সম্পূর্ণ ডিবি স্ক্রিপ্ট বন্ধ হয়ে ভিএসএসে পেতে ডিএমও এবং ভিএসএস অবজেক্ট ব্যবহার করে। আমি এটিকে একটি ভিবি স্ক্রিপ্টে পরিণত করেছি এবং এটি এখানে পোস্ট করেছি । আপনি সহজেই ভিএসএস কলগুলি গ্রহণ করতে পারেন এবং সমস্ত স্ক্রিপ্ট তৈরি করতে ডিএমও স্টাফ ব্যবহার করতে পারেন, এবং তারপরে একই ব্যাচের ফাইল থেকে এসভিএন কল করতে পারেন যা ভিবিএস স্ক্রিপ্টটিকে চেক ইন করার জন্য কল করে?

ডেভ জে


5

আমি প্রক্রিয়াটির ডাটাবেস বর্ধিত বৈশিষ্ট্য পরিবারের মাধ্যমে সঞ্চিত ডাটাবেসে একটি সংস্করণও ব্যবহার করছি। আমার অ্যাপ্লিকেশনটিতে প্রতিটি সংস্করণ পদক্ষেপের জন্য স্ক্রিপ্ট রয়েছে (উদাঃ 1.1 থেকে 1.2 পর্যন্ত সরানো)। মোতায়েন করার সময় এটি বর্তমান সংস্করণটি দেখায় এবং তারপরে এটি শেষ অ্যাপ্লিকেশন সংস্করণে না পৌঁছা পর্যন্ত একের পর এক স্ক্রিপ্টগুলি চালায়। এমন কোনও স্ক্রিপ্ট নেই যা সরাসরি 'চূড়ান্ত' সংস্করণ রাখে, এমনকি একটি পরিষ্কার ডিবিতে স্থাপন করে বিভিন্ন স্তরের আপগ্রেড পদক্ষেপের মাধ্যমে মোতায়েন করা হয়।

এখন আমি যেটি যোগ করতে চাই তা হ'ল আমি দু'দিন আগে এমএস ক্যাম্পাসে নতুন এবং আসন্ন ভিএস ডিবি সংস্করণ সম্পর্কে একটি উপস্থাপনা দেখেছি। উপস্থাপনাটি এই বিষয়টিতে বিশেষভাবে দৃষ্টি নিবদ্ধ করেছিল এবং আমাকে জলের বাইরে ফেলে দেওয়া হয়েছিল। আপনার অবশ্যই এটি পরীক্ষা করে দেখা উচিত, নতুন সুবিধাগুলি টি-এসকিউএল স্ক্রিপ্টগুলিতে স্ক্রিমা সংজ্ঞা রাখার দিকে মনোনিবেশ করা হয়েছে (ক্রেইটস), নির্ধারিত স্কিমার সাথে ডিপোরিয়মেন্ট স্কিমাকে তুলনা করার জন্য একটি রানটাইম ডেল্টা ইঞ্জিন এবং সোর্স কোড ইন্টিগ্রেশনের সাথে ডেল্টা অলটারগুলি এবং সংহতকরণ, পর্যন্ত এবং এমএসবিল্ড অটোমেটেড বিল্ড ড্রপের জন্য অবিচ্ছিন্ন একীকরণ সহ। ড্রপটিতে একটি নতুন ফাইল টাইপ থাকবে .dbschema ফাইল যা ডিপ্লোমেন্ট সাইটে নেওয়া যেতে পারে এবং একটি কমান্ড লাইন সরঞ্জাম প্রকৃত 'ডেল্টাস' করতে পারে এবং স্থাপনা চালাতে পারে। আমার এই বিষয়ে ভিএসডিই ডাউনলোডগুলির লিঙ্ক সহ একটি ব্লগ এন্ট্রি রয়েছে, আপনার এগুলি পরীক্ষা করা উচিত:http://rusanu.com/2009/05/15/version-control-and-your-database/


5

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


3

আমার অভিজ্ঞতায় সমাধানটি দ্বিগুণ:

  1. আপনার বিকাশের সময় একাধিক বিকাশকারী দ্বারা বিকাশ করা ডাটাবেসের পরিবর্তনগুলি পরিচালনা করতে হবে।

  2. গ্রাহকদের সাইটগুলিতে আপনাকে ডাটাবেস আপগ্রেড পরিচালনা করতে হবে।

# 1 হ্যান্ডেল করার জন্য আপনার একটি শক্তিশালী ডাটাবেস ডিফ / মার্জ সরঞ্জাম প্রয়োজন। আপনাকে নিজে হাতে হাতছাড়া না হওয়া দ্বন্দ্বগুলি সমাধান করার সময় সেরা সরঞ্জামটি যথাসম্ভব স্বয়ংক্রিয়ভাবে মার্জ করতে সক্ষম হওয়া উচিত।

নিখুঁত সরঞ্জামটি একটি 3-উপায় মার্জ অ্যালগরিদম ব্যবহার করে মার্জ ক্রিয়াকলাপ পরিচালনা করতে হবে যা তাদের ডাটাবেসে এবং মাইন ডাটাবেসটিতে বেস ডেটাবেসের সাথে সম্পর্কিত পরিবর্তনগুলি বিবেচনা করে।

আমি একটি বাণিজ্যিক সরঞ্জাম লিখেছি যা এসকিউএল ডাটাবেসের জন্য ম্যানুয়াল মার্জ সমর্থন সরবরাহ করে এবং আমি বর্তমানে এসকিউএলাইটের জন্য 3-উপায় সংহত অ্যালগরিদমের জন্য সমর্থন যুক্ত করছি। এটি http://www.sqlitecompare.comদেখুন

# 2 হ্যান্ডেল করার জন্য আপনার জায়গায় আপগ্রেড ফ্রেমওয়ার্কের প্রয়োজন হবে।

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

এই বিষয়ে আমার নিবন্ধটি http://www.codeproject.com/KB/datedia/sqlite_upgrade.aspx এ দেখুনআমি কী সম্পর্কে বলছি তার একটি সাধারণ ধারণা পেতে ।

শুভকামনা

লিরন লেবি


3

ডিবিঘস্ট http://www.innovartis.co.uk/ দেখুন । আমি এখন 2 বছর ধরে একটি স্বয়ংক্রিয় ফ্যাশনে ব্যবহার করেছি এবং এটি দুর্দান্ত কাজ করে। এটি আমাদের ডিবি বিল্ডিংগুলিকে জাভা বা সি বিল্ডের মতো ঘটতে দেয়, ডাটাবেস বাদে। আপনি জানেন আমি কি বলতে চাচ্ছি.


2

আমি আপনার ডাটাবেসের জন্য একটি সংস্করণ নিয়ন্ত্রণ ব্যবস্থা উন্নত করতে তুলনামূলক সরঞ্জামগুলি ব্যবহার করার পরামর্শ দেব। এক্সএসকিউএল স্কিমা তুলনা এবং এক্সএসকিউএল ডেটা তুলনা করার একটি ভাল বিকল্প ।

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

হায়, আপনি যদি সংস্করণ নিয়ন্ত্রণের অধীনেও ডেটা রাখতে চান, আপনি আপনার ডাটাবেসের জন্য পরিবর্তন স্ক্রিপ্ট তৈরি করতে এবং আপনার সংস্করণ নিয়ন্ত্রণে। এসকিউএল ফাইলগুলি যুক্ত করতে এক্সএসকিউএল ডেটা তুলনা ব্যবহার করতে পারেন। তারপরে আপনি যে কোনও সংস্করণটি রিভার্ট / আপডেট করতে এই স্ক্রিপ্টগুলি কার্যকর করতে পারেন। মনে রাখবেন যে 'রিভার্ট' কার্যকারিতাটির জন্য আপনাকে পরিবর্তন স্ক্রিপ্টগুলি তৈরি করতে হবে যা কার্যকর করা হলে সংস্করণ 3 সংস্করণ 2 এর মতো করে তোলে এবং 'আপডেট' কার্যকারিতার জন্য, আপনাকে বিপরীতে পরিবর্তন স্ক্রিপ্টগুলি তৈরি করতে হবে।

শেষ অবধি, কিছু প্রাথমিক ব্যাচ প্রোগ্রামিং দক্ষতার সাথে আপনি এক্সএসকিউএল স্কিমা তুলনা এবং এক্সএসকিউএল ডেটা তুলনার কমান্ড লাইন সংস্করণ ব্যবহার করে পুরো প্রক্রিয়াটি স্বয়ংক্রিয় করতে পারবেন

দাবি অস্বীকার: আমি এক্সএসকিউএল সম্পর্কিত।

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