এটি কি এসকিউএল সার্ভার 2016 এর সাথে একটি বাগ আছে?
হ্যাঁ. অবশ্যই এটি সঠিক আচরণ নয়। আমি এখানে রিপোর্ট করেছেন এবং হয় SQL সার্ভার 2016 জন্য SP2 CU9 সংশোধন ।
হিসাবে Mikael এরিকসন মন্তব্য বলছেন sys.database_scoped_configurations
এবং sys.dm_exec_sessions
বিন্যাসে মতামত হিসাবে প্রয়োগ করা হয়
SELECT ...
FROM OpenRowset(TABLE xxxx)
তবে নীচে দুটি পরিকল্পনার তুলনা করলে সুস্পষ্ট পার্থক্য রয়েছে।
DBCC TRACEON(3604);
DECLARE @database_scoped_configurations TABLE(x INT);
INSERT INTO @database_scoped_configurations
SELECT configuration_id
FROM sys.database_scoped_configurations
OPTION (QUERYTRACEON 8608, QUERYTRACEON 8615, QUERYTRACEON 8619, QUERYTRACEON 8620 );
DECLARE @dm_exec_sessions TABLE(x INT);
INSERT INTO @dm_exec_sessions
SELECT session_id
FROM sys.dm_exec_sessions
OPTION (QUERYTRACEON 8608, QUERYTRACEON 8615, QUERYTRACEON 8619, QUERYTRACEON 8620 );
এই উভয় কোয়েরি শোতে ফ্ল্যাগ 8619 আউটপুট
বিধি প্রয়োগ করুন: এনফোর্সএইচপ্যান্ডএসিসিকার্ড - x0-> স্পুল বা শীর্ষ (x0)
এসকিউএল সার্ভার দৃশ্যত এটি নির্ধারণ করতে সক্ষম হয় না যে টিভিএফের উত্সটিও সন্নিবেশ লক্ষ্য নয় তাই এর জন্য হ্যালোইন সুরক্ষা প্রয়োজন।
সেশনের ক্ষেত্রে এটি একটি স্পুল হিসাবে প্রয়োগ করা হয়েছিল যা প্রথমে সমস্ত সারিগুলিকে ক্যাপচার করে। ইন database_scoped_configurations
একটি যোগ করে TOP 1
পরিকল্পনা। এই নিবন্ধেTOP
হ্যালোইন সুরক্ষার জন্য ব্যবহার সম্পর্কে আলোচনা করা হয়েছে । TOP
প্রত্যাশার পরিবর্তে স্পুলকে চাপ প্রয়োগ করার জন্য একটি অনিবন্ধিত ট্রেস পতাকা উল্লেখ করা হয়েছে ।
DECLARE @database_scoped_configurations TABLE(x INT);
INSERT INTO @database_scoped_configurations
SELECT configuration_id
FROM sys.database_scoped_configurations
OPTION (QUERYTRACEON 8692)
TOP 1
স্পুলের পরিবর্তে ব্যবহার করার ক্ষেত্রে একটি স্পষ্ট সমস্যা হ'ল এটি নির্বিচারে সন্নিবেশ করা সারিগুলির সংখ্যা সীমাবদ্ধ করবে। সুতরাং এটি কেবলমাত্র বৈধ হবে যদি ফাংশনটি দিয়ে ফিরে আসা সারির সংখ্যা <= 1 হয়।
প্রাথমিক মেমো এটির মতো দেখাচ্ছে
কোয়েরি 2 এর জন্য প্রাথমিক মেমোটির সাথে এটি তুলনা করুন
আমি যদি উপরেরটি সঠিকভাবে বুঝতে পারি তবে এটি মনে করে যে প্রথম টিভিএফ সর্বাধিক এক সারিতে ফিরিয়ে দিতে পারে এবং তাই একটি ভুল অনুকূলকরণ প্রয়োগ করে। দ্বিতীয় ক্যোয়ারির জন্য সর্বোচ্চটি সেট করা হয়েছে 1.34078E+154
( 2^512
)।
এই সর্বাধিক সারি গণনাটি কোথা থেকে এসেছে তা আমার কোনও ধারণা নেই। সম্ভবত মেটাডাটা সরবরাহ করেছেন ডিএমভির লেখক? এটিও আজব যে, TOP(50)
কাজটি আবার লিখিত হয় না TOP(1)
কারণ TOP(50)
হ্যালোইন সমস্যাটি ঘটতে বাধা দেয় না (যদিও এটি অনির্দিষ্টকালের জন্য অব্যাহত রাখবে)