নিহিত ডাটাবেসের প্রাথমিক উদ্দেশ্য হ'ল আপনার ডেটাবেসটিকে চার্চের প্রচুর স্ক্যাফোল্ডিং ছাড়াই কোনও নতুন সার্ভারে পোর্ট করা সহজ করা। এই বিষয়টি মাথায় রেখে, আমি কয়েকটি সম্ভাব্য সমস্যার সমাধান করব যা এই মাইগ্রেশনটিকে আরও কঠিন করে তুলবে - এবং বেশিরভাগটি এই বিষয়টিকে ঘুরিয়ে দেয় যে ডেটাবেসগুলি কেবলমাত্র এসকিউএল সার্ভার ২০১২-তে অন্তর্ভুক্ত রয়েছে (কন্টেন্টটি বাস্তবে প্রয়োগ করা হয় না)।
সংযোগ স্ট্রিং
কোনও ধারণকৃত ডাটাবেসের সাথে সংযোগের স্ট্রিং অবশ্যই সংযোগের স্ট্রিংয়ে অবশ্যই ডেটাবেস নির্দিষ্ট করতে হবে । সংযোগ স্থাপনের জন্য আপনি আর লগইনের ডিফল্ট ডাটাবেসের উপর নির্ভর করতে পারবেন না; আপনি যদি কোনও ডাটাবেস নির্দিষ্ট না করেন তবে এসকিউএল সার্ভার সমস্ত ধারণিত ডাটাবেসগুলির মধ্যে পদক্ষেপ নেবে না এবং আপনার শংসাপত্রগুলির সাথে মেলে এমন কোনও ডাটাবেস সন্ধান করার চেষ্টা করবে না।
ক্রস-ডিবি কোয়েরি
এমনকি যদি আপনি একই সার্ভারে থাকা দুটি পৃথক পৃথক ডাটাবেসে একই পাসওয়ার্ড সহ একই ব্যবহারকারী তৈরি করেন, আপনার অ্যাপ্লিকেশন ক্রস-ডাটাবেস অনুসন্ধানগুলি করতে সক্ষম হবে না। ব্যবহারকারীর নাম ও পাসওয়ার্ড একই হতে পারে, কিন্তু তারা না একই ব্যবহারকারীর। এর কারন? যদি আপনার কোনও হোস্ট করা সার্ভারে ডাটাবেস থাকে, তবে একই হোস্ট করা সার্ভারটি ব্যবহার করার কারণে অন্য কারও মতো একই ব্যবহারকারী থাকা থেকে আপনাকে বাধা দেওয়া উচিত নয়। যখন সম্পূর্ণ নিয়ন্ত্রণটি উপস্থিত হয় (সম্ভবত এসকিউএল সার্ভার ২০১২ এর পরে সংস্করণে কখনও হয় না)), ক্রস-ডাটাবেস প্রশ্নগুলি যাইহোক একেবারে নিষিদ্ধ করা হবে। আমি অত্যন্ত, উচ্চতর, আপনাকে উচ্চ প্রস্তাব দিচ্ছি যে আপনি থাকা ডাটাবেস ব্যবহারকারীদের মতো একই নাম দিয়ে সার্ভার-স্তরের লগইনগুলি তৈরি করবেন না এবং অন্তর্ভুক্ত ডাটাবেসগুলির মধ্যে একই ব্যবহারকারীর নামটি এড়াতে চেষ্টা করবেন। যদি আপনার একাধিক ধারণকৃত ডাটাবেসগুলিতে আঘাত করে এমন কোয়েরি চালানোর দরকার হয় তবে যথাযথ সুযোগ-সুবিধাগুলি রয়েছে এমন সার্ভার-লেভেল লগইন ব্যবহার করে এটি করুন (আপনি সম্ভবত এটি sysadmin
পড়তে পারেন তবে কেবল পঠন অনুসন্ধানের জন্যই এটি CONNECT ANY DATABASE
এবং এটি SELECT ALL USER SECURABLES
)।
প্রতিশব্দ
বেশিরভাগ 3- এবং 4-অংশের নামগুলি সনাক্ত করা সহজ, এবং একটি ডিএমভিতে উপস্থিত হয়। তবে আপনি যদি একটি প্রতিশব্দ তৈরি করেন যা একটি 3- বা 4-অংশের নামকে নির্দেশ করে তবে এগুলি ডিএমভিতে প্রদর্শিত হবে না। সুতরাং আপনি যদি সমার্থক শব্দটির ভারী ব্যবহার করেন তবে সম্ভবত আপনি কিছু বাহ্যিক নির্ভরতা মিস করবেন এবং এটি এমন একটি সমস্যা তৈরি করতে পারে যেখানে আপনি ডাটাবেসটিকে অন্য একটি সার্ভারে স্থানান্তরিত করতে পারেন। আমি এই সমস্যাটি সম্পর্কে অভিযোগ করেছি, তবে এটি "ডিজাইন দ্বারা" হিসাবে বন্ধ ছিল এবং নতুন প্রতিক্রিয়া সিস্টেমে মাইগ্রেশনটি টিকেনি । নোট করুন যে ডিএমভি গতিশীল এসকিউএল এর মাধ্যমে নির্মিত 3- এবং 4-অংশের নামগুলিও মিস করবে।
পাসওয়ার্ড নীতি
আপনি যদি কোনও পাসওয়ার্ড নীতিমালা ছাড়াই কোনও সিস্টেমে থাকা একটি ডাটাবেস ব্যবহারকারী তৈরি করে থাকেন, তবে একই পাসওয়ার্ড নীতিমালার পরিবর্তে অন্য কোনও সিস্টেমে একই ব্যবহারকারী তৈরি করা আপনার পক্ষে কঠিন হতে পারে। এটি কারণ CREATE USER
সিনট্যাক্সটি পাসওয়ার্ড নীতিটিকে বাইপাস করে সমর্থন করে না। আমি এই সমস্যাটি সম্পর্কে একটি বাগ দায়ের করেছি, এবং এটি উন্মুক্ত রয়েছে (এবং কানেক্টের অবসর নেওয়ার সময় এটি চালানো থেকেও বাঁচেনি)। এবং এটি আমার কাছে আশ্চর্যজনক বলে মনে হয় যে একটি সিস্টেমে পাসওয়ার্ড নীতি রয়েছে এমন জায়গায় আপনি একটি সার্ভার-লেভেল লগইন তৈরি করতে পারেন যা নীতিটি সহজেই বাইপাস করে, তবে আপনি এমন একটি ডাটাবেস ব্যবহারকারী তৈরি করতে পারবেন না যা এই ব্যবহারকারী সহজাতভাবেই রয়েছেন সুরক্ষা ঝুঁকি কম।
হালকা খাবার
যেহেতু আমরা আর টেম্পডিবি'র জোটের উপর নির্ভর করতে পারি না, আপনার বর্তমানে এমন কোনও কোড পরিবর্তন করতে হবে যা বর্তমানে সুস্পষ্ট সংগ্রহের DATABASE_DEFAULT
ব্যবহার CATALOG_DEFAULT
করে বা পরিবর্তে ব্যবহার করতে পারে । কিছু সম্ভাব্য সমস্যার জন্য এই বিওএল নিবন্ধটি দেখুন ।
IntelliSense
যদি আপনি কোনও ধারণকৃত ব্যবহারকারী হিসাবে থাকা একটি ডাটাবেসের সাথে সংযুক্ত হন তবে এসএসএমএস সম্পূর্ণরূপে ইন্টেলিজেন্স সমর্থন করবে না। সিনট্যাক্স ত্রুটিগুলির জন্য আপনি বেসিক আন্ডারলাইনিং পাবেন তবে কোনও স্বয়ংক্রিয়-পূর্ণ তালিকা বা সরঞ্জামদ্বার এবং সমস্ত মজাদার উপাদান নেই। আমি এই সমস্যাটি সম্পর্কে একটি ত্রুটি দায়ের করেছি, এবং এটি উন্মুক্ত রয়েছে - এবং আরও একটি যা এই পদক্ষেপটি থেকে রক্ষা পায় নি।
এসকিউএল সার্ভার ডেটা সরঞ্জাম
আপনি যদি ডাটাবেস বিকাশের জন্য এসএসডিটি ব্যবহার করার পরিকল্পনা করছেন তবে বর্তমানে উপস্থিত ডাটাবেসগুলির জন্য সম্পূর্ণ সমর্থন নেই। যার সত্যিকারের অর্থ হ'ল প্রকল্পটি বিল্ডিং ব্যর্থ হবে না যদি আপনি এমন কিছু বৈশিষ্ট্য বা সিনট্যাক্স ব্যবহার করেন যা কন্টেন্টগুলি ভেঙে দেয়, কারণ এসএসডিটি বর্তমানে জানে না কী কী নিয়ন্ত্রণ রয়েছে এবং এটি কী ভাঙতে পারে।
পরিবর্তে ডেটাবেস
কোনও ALTER DATABASE
অন্তর্নিহিত ডাটাবেসের প্রসঙ্গের মধ্যে থেকে কোনও কমান্ড চালানোর সময় , আপনার যতটা ALTER DATABASE foo
প্রয়োজন ব্যবহারের চেয়ে বেশি রথের ব্যবহার করুন ALTER DATABASE CURRENT
- এটি ডাটাবেস স্থানান্তরিত হলে, নাম পরিবর্তন করা ইত্যাদি etc. এই আদেশগুলি তাদের বাহ্যিক প্রসঙ্গ বা রেফারেন্স সম্পর্কে কিছু জানতে হবে না ।
আরও কয়েকজন
কিছু কিছু জিনিস যা আপনার সম্ভবত ব্যবহার করা উচিত নয় তবে তবুও সেই বিষয়গুলির তালিকায় উল্লেখ করা উচিত যা সমর্থিত নয় বা অবমানিত রয়েছে এবং এতে থাকা ডাটাবেসে ব্যবহার করা উচিত নয়:
- সংখ্যাযুক্ত পদ্ধতি
- অস্থায়ী পদ্ধতি
- আবদ্ধ বস্তুতে কোলেশন পরিবর্তন হয়
- ডেটা ক্যাপচার পরিবর্তন করুন
- ট্র্যাকিং পরিবর্তন করুন
- প্রতিলিপি
যে সমস্ত বলেছিল, এটি অন্তর্ভুক্ত থাকা ডাটাবেসগুলি ব্যবহার করার জন্য অগত্যা অসুবিধা নয়, এগুলি কেবল আপনার বিষয় সম্পর্কে সচেতন হওয়া উচিত এবং সরকারী ডকুমেন্টেশনে সমস্ত স্পষ্টভাবে প্রকাশ করা হয়নি।
আপনার এটিও নিশ্চিত হওয়া দরকার যে যদি কোনও অন্তর্ভুক্ত ডাটাবেস স্থানান্তরিত হতে চলেছে বা কোনও উপলব্ধতা গোষ্ঠীর অংশ বা মিরর করা হচ্ছে তবে সমস্ত সম্ভাব্য গন্তব্য সার্ভারগুলির sp_configure
বিকল্পটি contained database authentication
1 তে সেট করা আছে।
আপনি খুঁজে পেতে পারেন এই ব্লগ পোস্টে দরকারী, সেইসাথে এই এক যদিও তারা প্রাক তারিখ RTM।