আমি কীভাবে আমার ডাটাবেসে বিভাজনযুক্ত সমস্ত সারণীর তালিকা পেতে পারি?
কোন সিস্টেমে টেবিল / ডিএমভি দেখতে হবে?
আমি কীভাবে আমার ডাটাবেসে বিভাজনযুক্ত সমস্ত সারণীর তালিকা পেতে পারি?
কোন সিস্টেমে টেবিল / ডিএমভি দেখতে হবে?
উত্তর:
আপনি যা চান তা এই কোয়েরিতে আপনাকে দেওয়া উচিত:
select distinct t.name
from sys.partitions p
inner join sys.tables t
on p.object_id = t.object_id
where p.partition_number <> 1
sys.partitions
ক্যাটালগ দৃশ্য টেবিল এবং সবচেয়ে ইনডেক্স জন্য সমস্ত পার্টিশন একটি তালিকা দেয়। sys.tables
টেবিলগুলি পেতে কেবল এটিতে যোগ দিন ।
সমস্ত টেবিলের কমপক্ষে একটি বিভাজন রয়েছে, সুতরাং আপনি যদি বিশেষভাবে পার্টিশনযুক্ত টেবিলগুলির সন্ধান করছেন, তবে আপনাকে এই কোয়েরিটি অফ sys.partitions.partition_number <> 1
- ভিত্তিক ফিল্টার করতে হবে (বিভাজনবিহীন টেবিলগুলির জন্য, partition_number
সর্বদা 1 এর সমান হবে)।
partition_id
আপনার যেখানে প্রয়োজন তার ক্লুজের পরিবর্তে partition_number
। আমার ক্ষমা।
পদ্ধতিগুলি আরও ভাল কোয়েরি নিম্নলিখিত হিসাবে রয়েছে:
select object_schema_name(i.object_id) as [schema],
object_name(i.object_id) as [object],
i.name as [index],
s.name as [partition_scheme]
from sys.indexes i
join sys.partition_schemes s on i.data_space_id = s.data_space_id
পার্টিশন স্কিমটি সনাক্ত করার জন্য এটি 'যথাযথ' স্থানটি দেখায়: sys.partition_schemes
এটির সঠিক কার্ডিনালিটি রয়েছে (প্রয়োজন নেই distinct
) এটি কেবলমাত্র পার্টিশনযুক্ত অবজেক্ট (ফিল্টারিং where
ক্লজের প্রয়োজন নেই ) দেখায় , এটি স্কিমা নাম এবং পার্টিশন স্কিমের নাম প্রজেক্ট করে। এই প্রশ্নটি কীভাবে মূল প্রশ্নের ত্রুটি তুলে ধরে তা নোট করুন: এটি নয় টেবিলগুলি যা বিভাজনযুক্ত, তবে সূচিগুলি (এবং এর মধ্যে সূচক 0 এবং 1, ওরফে। হিপ এবং ক্লাস্টার ইনডেক্স রয়েছে)। একটি টেবিলের একাধিক সূচক থাকতে পারে, কিছু কিছু বিভক্ত হয়।
ঠিক আছে, তাহলে 2 এর সংমিশ্রণ সম্পর্কে কীভাবে:
select
object_schema_name(i.object_id) as [schema],
object_name(i.object_id) as [object_name],
t.name as [table_name],
i.name as [index_name],
s.name as [partition_scheme]
from sys.indexes i
join sys.partition_schemes s on i.data_space_id = s.data_space_id
join sys.tables t on i.object_id = t.object_id