Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cari Tahu apakah Tabel Dipartisi di SQL Server (T-SQL)

Jika Anda perlu mengetahui apakah tabel telah dipartisi di SQL Server, Anda dapat menjalankan gabungan terhadap sys.tables , sys.indexes , dan sys.partition_schemes dilihat.

Contoh

Berikut ini contoh untuk didemonstrasikan.

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';

Hasil:

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

Ini dia lagi menggunakan output vertikal (agar tidak perlu scroll ke samping):

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

Saya hanya mengembalikan sebagian kecil dari kolom yang sebenarnya, tetapi silakan kembalikan kolom mana pun yang Anda minati.

Anda juga dapat menghapus baris terakhir untuk mengembalikan semua tabel yang dipartisi.

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;

Hasil:

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

Dalam kasus saya, hanya ada satu tabel yang dipartisi dalam database.

Untuk memperjelas, ini hanya mengembalikan tabel yang telah dipartisi secara eksplisit.

Kembalikan Partisi

Anda juga dapat menanyakan tampilan lain, seperti sys.partitions dan sys.dm_db_partition_stats untuk mengembalikan daftar partisi untuk setiap tabel.

Perhatikan bahwa kedua tampilan ini juga akan mengembalikan tabel yang belum secara eksplisit dipartisi (yaitu hanya memiliki satu partisi). Di SQL Server, tabel dan tampilan yang belum dipartisi secara eksplisit masih memiliki partisi (partition_number =1).

Berikut ini contoh sys.dm_db_partition_stats :

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

Hasil:

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

Berikut adalah contoh di mana saya mengembalikan info partisi untuk tabel yang tidak dipartisi.

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

Hasil:

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

Seperti disebutkan, masih memiliki satu partisi, dan partition_number adalah 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. Tally Table untuk memasukkan tanggal yang hilang di antara dua tanggal? SQL

  2. Cara Menampilkan Kolasi Database di SQL Server (T-SQL)

  3. Bagaimana mencegah pembaruan ke tabel, dengan pengecualian untuk satu situasi

  4. Kapan/Mengapa menggunakan Cascading di SQL Server?

  5. Apa cara terbaik untuk membuat halaman hasil di SQL Server