Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Dowiedz się, do której partycji dana wartość zostanie zmapowana w SQL Server (T-SQL)

Jeśli masz podzieloną na partycje tabelę lub indeks w SQL Server i chcesz określić, do której partycji zostanie zmapowana dana wartość, możesz to zrobić szybko i ładnie za pomocą $PARTITION funkcja systemu.

Wszystko, co musisz wiedzieć, to nazwa funkcji partycji (i oczywiście interesująca Cię wartość).

Przykład

Oto przykład do zademonstrowania.

SELECT $PARTITION.MoviesPartitionFunction(5);

Wynik:

+--------------------+
| (No column name)   |
|--------------------|
| 2                  |
+--------------------+

W tym przypadku wartość 5 przejdzie do partycji numer 2.

Wypróbujmy inne wartości.

SELECT 
    $PARTITION.MoviesPartitionFunction(-100) AS [-100],
    $PARTITION.MoviesPartitionFunction(100) AS [100],
    $PARTITION.MoviesPartitionFunction(1000) AS [1000],
    $PARTITION.MoviesPartitionFunction(100000) AS [100000];

Wynik:

+--------+-------+--------+----------+
| -100   | 100   | 1000   | 100000   |
|--------+-------+--------+----------|
| 1      | 2     | 3      | 4        |
+--------+-------+--------+----------+

Zapytania między bazami danych

Możesz także poprzedzić nazwę bazy danych, aby wyszukać inną bazę danych.

SELECT MovieDb.$PARTITION.MoviesPartitionFunction(5);

Konwersja typu danych

Typ danych podanej wartości musi być zgodny lub niejawnie przekonwertowany na typ danych odpowiadającej mu kolumny partycjonowania.

Jeśli nie, prawdopodobnie otrzymasz błąd 245.

SELECT $PARTITION.MoviesPartitionFunction('Hey!');

Wynik:

Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value 'Hey!' to data type int.

Zwróć uwagę, że $PARTITION zwraca numer partycji dla dowolnej prawidłowej wartości, niezależnie od tego, czy wartość aktualnie istnieje w partycjonowanej tabeli lub indeksie, który używa funkcji partycji.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak znaleźć optymalny unikalny identyfikator w tabeli w SQL Server:sp_special_columns

  2. Jak skopiować dane z ogromnej tabeli do innej tabeli w SQL Server

  3. Trzy najważniejsze trendy wpływające na administratorów baz danych odpowiedzialnych za monitorowanie SQL Server

  4. Łączenie się z lokalną bazą danych SQL Server przy użyciu C#

  5. INFORMATION_SCHEMA vs sysobjects