Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

पता लगाएँ कि क्या तालिका SQL सर्वर (T-SQL) में विभाजित है

यदि आपको यह पता लगाने की आवश्यकता है कि SQL सर्वर में तालिका को विभाजित किया गया है या नहीं, तो आप sys.tables के विरुद्ध एक जॉइन चला सकते हैं , sys.indexes , और sys.partition_schemes दृश्य।

उदाहरण

प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।

SELECT
    t.name AS [Table],
    i.name AS [Index],
    i.type_desc,
    i.is_primary_key,
    ps.name AS [Partition Scheme]
FROM sys.tables t
INNER JOIN sys.indexes i
    ON t.object_id = i.object_id
    AND i.type IN (0,1)
INNER JOIN sys.partition_schemes ps   
    ON i.data_space_id = ps.data_space_id
WHERE t.name = 'Movies';

परिणाम:

+---------+------------------------------+-------------+------------------+-----------------------+
| Table   | Index                        | type_desc   | is_primary_key   | Partition Scheme      |
|---------+------------------------------+-------------+------------------+-----------------------|
| Movies  | PK__Movies__4BD2941AD44D2FCF | CLUSTERED   | 1                | MoviesPartitionScheme |
+---------+------------------------------+-------------+------------------+-----------------------+

यहां यह फिर से लंबवत आउटपुट का उपयोग कर रहा है (ताकि आपको किनारे पर स्क्रॉल न करना पड़े):

Table            | Movies
Index            | PK__Movies__4BD2941AD44D2FCF
type_desc        | CLUSTERED
is_primary_key   | 1
Partition Scheme | MoviesPartitionScheme

मैं केवल वास्तविक कॉलम का एक छोटा सा सबसेट लौटा रहा हूं, लेकिन जो भी कॉलम आपकी रुचि के हों, उन्हें बेझिझक वापस कर दें।

साथ ही, आप सभी विभाजित तालिकाओं को वापस करने के लिए अंतिम पंक्ति को हटा सकते हैं।

SELECT
    t.name AS [Table],
    i.name AS [Index],
    i.type_desc,
    i.is_primary_key,
    ps.name AS [Partition Scheme]
FROM sys.tables t
INNER JOIN sys.indexes i
    ON t.object_id = i.object_id
    AND i.type IN (0,1)
INNER JOIN sys.partition_schemes ps   
    ON i.data_space_id = ps.data_space_id;

परिणाम:

+---------+------------------------------+-------------+------------------+-----------------------+
| Table   | Index                        | type_desc   | is_primary_key   | Partition Scheme      |
|---------+------------------------------+-------------+------------------+-----------------------|
| Movies  | PK__Movies__4BD2941AD44D2FCF | CLUSTERED   | 1                | MoviesPartitionScheme |
+---------+------------------------------+-------------+------------------+-----------------------+

मेरे मामले में, डेटाबेस में केवल एक विभाजित तालिका है।

बस स्पष्ट होने के लिए, यह केवल उन तालिकाओं को लौटाता है जिन्हें स्पष्ट रूप से विभाजित किया गया है।

विभाजन लौटाएं

आप अन्य विचारों को भी क्वेरी कर सकते हैं, जैसे sys.partitions और sys.dm_db_partition_stats प्रत्येक तालिका के लिए विभाजन की सूची वापस करने के लिए।

ध्यान दें कि ये दोनों दृश्य उन तालिकाओं को भी लौटाएंगे जिन्हें स्पष्ट रूप से विभाजित नहीं किया गया है (यानी उनके पास केवल एक विभाजन है)। SQL सर्वर में, टेबल और दृश्य जिन्हें स्पष्ट रूप से विभाजित नहीं किया गया है, उनमें अभी भी एक विभाजन है (partition_number =1)।

यहां sys.dm_db_partition_stats . का एक उदाहरण दिया गया है :

SELECT 
    partition_number,
    row_count
FROM sys.dm_db_partition_stats
WHERE object_id = OBJECT_ID('Movies');

परिणाम:

+--------------------+-------------+
| partition_number   | row_count   |
|--------------------+-------------|
| 1                  | 0           |
| 2                  | 100         |
| 3                  | 3979        |
| 4                  | 0           |
+--------------------+-------------+

यहां एक उदाहरण दिया गया है जहां मैं एक गैर-विभाजित तालिका के लिए विभाजन जानकारी लौटाता हूं।

SELECT 
    partition_number,
    row_count
FROM sys.dm_db_partition_stats
WHERE object_id = OBJECT_ID('Cats');

परिणाम:

+--------------------+-------------+
| partition_number   | row_count   |
|--------------------+-------------|
| 1                  | 3           |
+--------------------+-------------+

जैसा कि उल्लेख किया गया है, इसमें अभी भी एक विभाजन है, और इसका partition_number . है है 1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में sp_help_schedule का उपयोग करना

  2. मैं SQL सर्वर प्रबंधन स्टूडियो 2008 में जेनरेट स्क्रिप्ट कार्य को स्वचालित कैसे कर सकता हूं?

  3. SQL सर्वर में डेटा एक्सेस सक्षम है या नहीं यह जांचने के 2 तरीके (T-SQL उदाहरण)

  4. तालिका डेटा स्क्रिप्टिंग के लिए उपकरण

  5. मैं एमएस-एसक्यूएल सर्वर में एक अलियास्ड कॉलम पर ग्रुप बाय कैसे कर सकता हूं?