যদি আমি এসকিউএল সার্ভারে এটির সাথে কোনও ডাটাবেসের নাম ব্যবহার করি (2005 বা 2008), "মাই অ্যাপ.সেলস" এর মতো কিছু, এটির কোনও সমস্যা হবে?
যদি আমি এসকিউএল সার্ভারে এটির সাথে কোনও ডাটাবেসের নাম ব্যবহার করি (2005 বা 2008), "মাই অ্যাপ.সেলস" এর মতো কিছু, এটির কোনও সমস্যা হবে?
উত্তর:
আপনি পারেন , কিন্তু আমি না। আপনাকে সর্বদা ডিবি নামটি [মাইএপ.সেলস] এর মতো বর্গাকার বন্ধনী দ্বারা মোড়াতে হবে।
সুতরাং পুনরুদ্ধার করার জন্য: আপনি যদি নিজের বিবেককে মূল্য দেন তবে এটি করবেন না।
আমি মনে করি প্রযুক্তিগতভাবে সম্ভব হলেও এটি খুব খারাপ ধারণা ।
বেশ কয়েক বছর ধরে আমি জানতে পেরেছিলাম যে অনেক লোকের চার অংশের নামকরণ কনভেনশন বুঝতে সমস্যা হয়েছে যদিও এটি বেশ সুস্পষ্ট বলে মনে হচ্ছে:
server_name.database_name.schema_name.object_name
তারা যদি এরকম কিছু দেখেন তবে কী হবে তা কল্পনা করুন:
MAIN-SQL.[MyApp.Sales].hr.CompetitorsProducts
বা:
[MAIN-SQL\EXPRESS].[MyApp.Sales].sch_HR.[Products From.Our-Competitors]
জিনিস সহজ রাখা গুরুত্বপূর্ণ।
যদি অন্য কেউ এই প্রশ্নের মুখোমুখি হন ...
মনে রাখবেন যে এটি কেবল একটি খারাপ ধারণা নয় কারণ ব্যবহারকারীরা বিভ্রান্ত হতে পারেন, তবে কিছু সরঞ্জামগুলি বিভ্রান্ত হতে পারে বলেও।
এমনকি মাইক্রোসফ্ট নিজেই এই সমস্যা আছে। আপনি যদি মাইক্রোসফ্ট ক্যোয়ারী (ওডিবিসির মাধ্যমে) ব্যবহার করে আপনার ডাটাবেসটিকে একটি এক্সেল শিটের সাথে সংযুক্ত করার চেষ্টা করেন, আপনি একটি কনফিগারেশন উইজার্ড পাবেন যা আপনাকে সংযুক্ত করতে চাইলে যে ডাটাবেসটি বেছে নিতে দেয়। তবে ডটযুক্ত একটি ডাটাবেস বেছে নেওয়ার ফলে সার্ভারটি পাওয়া যায়নি এমন একটি ত্রুটি তৈরি করবে। দেখে মনে হচ্ছে উইজার্ডটি মানগুলি পলায়নের প্রয়োজন কিনা এবং সনাক্তকারীদের অন্ধভাবে কনটেট করে কিনা তা পরীক্ষা করে না।
অবশ্যই কাজের ক্ষেত্রগুলি রয়েছে তবে আপনি শুরু থেকে এটি না করে নিজেকে কিছুটা সমস্যা বাঁচাতে পারেন।
ডাটাবেসের নাম, প্রকাশনার নাম, ব্যবহারকারীর নামগুলিতে পিরিয়ড ব্যবহার করবেন না। এবং আমি দৃ strongly়ভাবে পরামর্শ দিচ্ছি যে নামটি (কলাম, টেবিল, দেখুন, ডাটাবেস, ইত্যাদি) কোনও সময় ব্যবহার করবেন না।
আপডেট: আমি নিশ্চিত করতে পারি, যে বিয়োগ, ড্যাশ "-" সিমিলার সমস্যার কারণ হয়।
যা ঘটে তা এখানে:
এসকিউএল সার্ভার সিস্টেম সঞ্চিত পদ্ধতিগুলির মতো অভ্যন্তরীণ ব্যবহারের জন্য স্ক্রিপ্টগুলি ব্যবহার করে। ইতিমধ্যে এখানে উল্লিখিত হিসাবে, আপনি যে আদেশগুলি ব্যবহার করেন সেগুলি আপনাকে মাঝে মাঝে নামটি বন্ধনীতে চাপিয়ে দিতে বাধ্য করে এবং এটি (গম্ভীরভাবে মাইক্রোসফ্ট?) নয় (সর্বদা) সঞ্চিত পদ্ধতি ব্যবহারের জন্য ঠিক নয় ।
প্রকৃতপক্ষে আমি অ্যাসোনিমেন্ট সম্পর্কিত তথ্যগুলি পরিষ্কার করার পক্ষে আর সক্ষম নই কারণ সঞ্চিত পদ্ধতিটি সমস্ত ডাটাবেসের মাধ্যমে পুনরাবৃত্তি করে এবং ডাটাবেসের নামগুলি সহজেই এড়িয়ে যায় না। এই পুনরাবৃত্তিটি জটিল যে আমি 8 টি এসপিতে এটি প্যাচ করতে সক্ষম ছিলাম না।
প্লাস আমি প্রতিলিপি সংঘাতগুলি সম্পাদনা করতে এমএমসি বা স্ক্রিপ্ট ব্যবহার করতে সক্ষম নই । আপনার যদি একটি (ওয়ান!) ডাটাবেস থাকে যার নামের ভিতরে একটি বিন্দু থাকে তবে এই সমস্যাগুলি প্রতিটি প্রকাশনা veভেরি ডিবিতে উপস্থিত হবে।
এই আমার উপস্থিতি হয়। কমপ্লেক্স এসকিউএল অ্যাকশনগুলি বেকার ভাষায় প্রক্রিয়া করা হয় এবং বেসটি ভাল থাকলে ঠিকঠাক কাজ করবে।
আপনি যদি মাইক্রোসফ্ট ক্যোয়ারী (ওডিবিসির মাধ্যমে) ব্যবহার করে আপনার ডাটাবেসটিকে একটি এক্সেল শিটের সাথে সংযুক্ত করার চেষ্টা করেন, আপনি একটি কনফিগারেশন উইজার্ড পাবেন যা আপনাকে সংযুক্ত করতে চাইলে যে ডাটাবেসটি বেছে নিতে দেয়। - একেজেন্ট
এই ত্রুটিগুলি প্রায়শই তৃতীয় পক্ষের সফ্টওয়্যারটিতে পাওয়া যেতে পারে, তাই এসকিএল সার্ভারে কোনও কিছুর নামে কখনও বিন্দু ব্যবহার করবেন না।
একই চুক্তি: বিদেশী কী নামের কোনও বিন্দু থাকা উচিত নয়।
আমি দেখতে পেয়েছি যে যদি আপনাকে এ জাতীয় নাম পরিবর্তন করতে হয় তবে sp_rename
কাজ করার জন্য আপনার বন্ধনী প্রয়োজন (কারণ আপনি কোনও বিদেশী কী নাম পরিবর্তন করে আপনার স্কিমা নির্দিষ্ট করার দরকার আছে)।
উদাহরণ:
sp_rename '[MySchema].[MyFKName.With.Dots]' 'NewFKName' 'OBJECT'
আপনি যদি বন্ধনীগুলি ভুলে যান তবে আপনি একটি ত্রুটি পাবেন: 15225
আমাদের সরবরাহকারীদের একজন স্কিমা নামটি প্রবর্তন করতে বেছে নিয়েছে: [সিস্টেম.অ্যাক্টিভিটিস.ডুয়েলিআইন্যান্সিং]। এটি আমাদের ড্যাটালোড সরঞ্জামটি ভেঙে গেছে, তাই তাদের অদ্ভুততা সহ্য করার জন্য আমাদের এখন আরও বিকাশ রয়েছে। শুধু এটা করবেন না। ব্যবহার করা '-'.
-
আপনি যখন আন্ডারস্কোর ব্যবহার করতে পারেন_
এবং নামটি বর্গাকার বন্ধনীতে মোটেও বন্ধ করতে না পারেন তখন কেন ড্যাশ ব্যবহার করবেন ?