আমরা যখন কোনও ফাংশন বলি তখন স্কিমা উপসর্গ (ডিবিও) বাধ্যতামূলক কেন?


9

যখন ব্যবহারকারীকে ডিফল্ট স্কিমা (ডিবিও) দিয়ে ম্যাপ করা হয় এবং আমরা স্কিমার উপস্থাপন না করে [dbo] এর অধীনে সমস্ত টেবিল নির্বাচন করতে পারি।

এটি পূর্বনির্ধারিত স্কিমার অধীনে আমরা উপসর্গ ব্যতীত সঞ্চিত পদ্ধতিগুলি কার্যকর করতে পারি।

এটি দেওয়া, কেন আমাদের স্কিমার সাথে একটি ফাংশন উপসর্গ করা প্রয়োজন?

ধন্যবাদ!

উত্তর:


11

তারপরে আমরা কেন ডিবিওয়ের অধীনে তৈরি উপসর্গ (স্কিমা) ছাড়াই ফাংশনটি কল করতে পারি?

ইউডিএফ-তে বই অনলাইন ডকুমেন্ট থেকে

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

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

আমি সর্বদা স্কিমা নামটি যুক্ত না করে কাজ করে এমনকি এটি ব্যবহার করে সমর্থন করি। এটি সেরা অনুশীলন এবং সমস্ত "ভাল" বিকাশকারীরা এটিকে যতটা নিরর্থক তা বিবেচনা না করেই এটি ব্যবহার করে।

আমি যা দেখছি তার অন্য কারণটি হ'ল ডাটাবেস ইঞ্জিনটির মতো সিস্টেম ফাংশন getdate ()এবং ব্যবহারকারীর সংজ্ঞায়িত ফাংশনগুলির মধ্যে পার্থক্য করার জন্য কিছু দরকার । আপনি যদি স্কিমা নাম ছাড়াই ফাংশনটিতে কল করার অনুমতি পান তবে কীভাবে ডাটাবেস ইঞ্জিনটি ব্যবহারকারী তৈরি করা ফাংশন গেটেটেট বা সিস্টেম GETDATE () ফাংশনটির মধ্যে পার্থক্য করতে পারে।


তবে এসপিদের সাথে এটি আলাদা কেন। যেমনটি আপনি বলেছিলেন নামকরণের সংঘর্ষ এড়ানোর জন্য এটি হতে পারে। আমি সবেমাত্র আমার ব্যবহারকারীর ডাটাবেসে একটি এসপি "ক্রিয়েড প্রসেসিটি স্পিহেল্প সিলেক্ট গেটডেট ()" হিসাবে তৈরি করেছি এবং যখন আমি স্কিমা (ডিবিও) দিয়ে বা ছাড়াই এক্সিকিউট করি তখন এসকিউএল সার্ভার সিস্টেম এসপিকে বোঝায়। এটি যে আমার এসপি তৈরি করে তা কার্যকর করে না কেন।
রাজেশ রঞ্জন

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

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

1
বিটিডাব্লু, "এসপি_" দিয়ে শুরু হওয়া পদ্ধতির পারফরম্যান্স প্রভাব পরিমাপ করা যায় না। এটি বছরের পর বছর ধরে কোনও সমস্যা হয়নি। এসপি উপসর্গটি এখনও একটি ভাল ধারণা নাও হতে পারে, তবে কার্য সম্পাদন কারণ নয়।
মাইকেল জে সোয়ার্ট

10

অন্য উত্তরটি ব্যাখ্যা করে যে এটি একটি সীমাবদ্ধতা তবে কারণ নয়।

প্রয়োজনীয়তা সর্বদা সত্য হয় না। স্কেলার ইউডিএফগুলি বীডযুক্ত হতে পারে EXECএবং এখনও অন্তর্নিহিত রেজোলিউশন ব্যবহার করতে পারে ( উদাহরণস্বরূপ )

আমি কল্পনা করি এটি নামকরণ সংঘটন এড়ানোর জন্য।

যদি ফাংশনগুলিকে স্কিমা ছাড়াই রেফারেন্স দেওয়ার অনুমতি দেওয়া হয় তবে crypt_gen_random2000 বা 2005 সালে কল করা তাদের নিজস্ব ফাংশন তৈরি করে এমন কোনও ব্যক্তির পরবর্তী সংস্করণে আপগ্রেড করার সমস্যা দেখা দিতে পারে কারণ এটি ২০০৮ সালে বিল্ট ইন ফাংশনের নাম হয়ে যায়।

execফাংশনগুলিতে নির্মিত হিসাবে ব্যবহারের সাথে কোনও অস্পষ্টতা বলা যায় না।


তবে এসপিদের সাথে এটি আলাদা কেন। যেমনটি আপনি বলেছিলেন নামকরণের সংঘর্ষ এড়ানোর জন্য এটি হতে পারে। আমি সবেমাত্র আমার ব্যবহারকারীর ডাটাবেসে একটি এসপি "ক্রিয়েড প্রসেসিটি স্পিহেল্প সিলেক্ট গেটডেট ()" হিসাবে তৈরি করেছি এবং যখন আমি স্কিমা (ডিবিও) দিয়ে বা ছাড়াই এক্সিকিউট করি তখন এসকিউএল সার্ভার সিস্টেম এসপিকে বোঝায়। এটি যে আমার এসপি তৈরি করে তা কার্যকর করে না কেন।
রাজেশ রঞ্জন

3
@Rajesh। মাস্টার / রিসোর্স ডেটাবেসগুলিতে সর্বদা সন্ধান করার জন্য sp_ শুরুর অবজেক্টগুলি বিশেষ কেসযুক্ত। এবং এটি নথিবদ্ধ যে এই উপসর্গটি এড়ানো উচিত। ফাংশন ইন বিল্ট করার জন্য এ জাতীয় কোনও কনভেনশন নেই।
মার্টিন স্মিথ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.