Jika Anda memiliki tabel atau indeks yang dipartisi di SQL Server, dan Anda ingin menentukan ke partisi mana nilai tertentu akan dipetakan, Anda dapat melakukannya dengan baik dan cepat dengan $PARTITION
fungsi sistem.
Yang perlu Anda ketahui hanyalah nama fungsi partisi (dan tentu saja, nilai yang Anda minati).
Contoh
Berikut ini contoh untuk didemonstrasikan.
SELECT $PARTITION.MoviesPartitionFunction(5);
Hasil:
+--------------------+ | (No column name) | |--------------------| | 2 | +--------------------+
Dalam hal ini, nilai 5
akan masuk ke nomor partisi 2.
Mari kita coba beberapa nilai lainnya.
SELECT
$PARTITION.MoviesPartitionFunction(-100) AS [-100],
$PARTITION.MoviesPartitionFunction(100) AS [100],
$PARTITION.MoviesPartitionFunction(1000) AS [1000],
$PARTITION.MoviesPartitionFunction(100000) AS [100000];
Hasil:
+--------+-------+--------+----------+ | -100 | 100 | 1000 | 100000 | |--------+-------+--------+----------| | 1 | 2 | 3 | 4 | +--------+-------+--------+----------+
Kueri Lintas-Database
Anda juga dapat mengawali nama database untuk mengkueri database yang berbeda.
SELECT MovieDb.$PARTITION.MoviesPartitionFunction(5);
Konversi Jenis Data
Tipe data dari nilai yang Anda berikan harus cocok atau secara implisit dapat dikonversi ke tipe data kolom partisi yang sesuai.
Jika tidak, Anda mungkin akan mendapatkan error 245.
SELECT $PARTITION.MoviesPartitionFunction('Hey!');
Hasil:
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value 'Hey!' to data type int.
Perhatikan bahwa $PARTITION
mengembalikan nomor partisi untuk setiap nilai yang valid, terlepas dari apakah nilai saat ini ada dalam tabel yang dipartisi atau indeks yang menggunakan fungsi partisi.