Pokud máte na serveru SQL rozdělenou tabulku nebo index a chcete určit, na který oddíl by byla daná hodnota namapována, můžete to udělat pěkně a rychle pomocí $PARTITION
systémové funkce.
Vše, co potřebujete znát, je název funkce oddílu (a samozřejmě hodnotu, která vás zajímá).
Příklad
Zde je příklad k demonstraci.
SELECT $PARTITION.MoviesPartitionFunction(5);
Výsledek:
+--------------------+ | (No column name) | |--------------------| | 2 | +--------------------+
V tomto případě hodnota 5
přejde do oddílu číslo 2.
Zkusme jiné hodnoty.
SELECT
$PARTITION.MoviesPartitionFunction(-100) AS [-100],
$PARTITION.MoviesPartitionFunction(100) AS [100],
$PARTITION.MoviesPartitionFunction(1000) AS [1000],
$PARTITION.MoviesPartitionFunction(100000) AS [100000];
Výsledek:
+--------+-------+--------+----------+ | -100 | 100 | 1000 | 100000 | |--------+-------+--------+----------| | 1 | 2 | 3 | 4 | +--------+-------+--------+----------+
Dotazy napříč databázemi
Můžete také zadat předponu názvu databáze, abyste se mohli dotazovat na jinou databázi.
SELECT MovieDb.$PARTITION.MoviesPartitionFunction(5);
Konverze typu dat
Datový typ hodnoty, kterou zadáte, se musí buď shodovat, nebo musí být implicitně převoditelný na datový typ příslušného rozdělovacího sloupce.
Pokud ne, pravděpodobně se zobrazí chyba 245.
SELECT $PARTITION.MoviesPartitionFunction('Hey!');
Výsledek:
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value 'Hey!' to data type int.
Všimněte si, že $PARTITION
vrátí číslo oddílu pro jakoukoli platnou hodnotu bez ohledu na to, zda hodnota aktuálně existuje v dělené tabulce nebo indexu, který používá funkci oddílu.