$PARTITION (Transact-sql)
İçine sütun değerlerini bölümleme kümesi eşlenmiş bölüm işlevi belirtilen için bölüm numarası verir SQL Server 2012.
Transact-SQL Sözdizim Kuralları
Sözdizimi
[ database_name. ] $PARTITION.partition_function_name(expression)
Bağımsız değişkenler
database_name
Bölüm işlevi içeren veritabanı adıdır.partition_function_name
Hangi karşı herhangi bir bölüm işlevinin sütun değerlerini bölümleme kümesi uygulanır adıdır.expression
Olan bir ifade veri türü eşleşen veya kendi karşılık gelen bölümleme sütun veri türüne örtük olarak dönüştürülebilir. expressionŞu anda bir bölümleme sütunun adını da olabilir partition_function_name.
Dönüş Türleri
int
Açıklamalar
$PARTITION işlevi bir int1 ve bölüm bölüm işlevi sayısı arasında değer.
$PARTITION değeri şu anda bölümlenmiş tablo veya bölüm işlevini kullanan dizin içinde varolup bakılmaksızın herhangi bir geçerli değer, bölüm numarasını döndürür.
Örnekler
A.Sütun değerlerini bölümleme kümesi için bölüm numarası alma
Aşağıdaki örnek, Bölüm işlevi oluşturur RangePF1Bu bölüm tablo veya dizin dört bölüm. $PARTITION bu belirlemek için kullanılır değeri 10, bölümleme sütununda temsil eden RangePF1, Tablo 1 bölüm koymak istiyorum.
USE AdventureWorks2012;
GO
CREATE PARTITION FUNCTION RangePF1 ( int )
AS RANGE FOR VALUES (10, 100, 1000) ;
GO
SELECT $PARTITION.RangePF1 (10) ;
GO
USE AdventureWorks2012;
GO
CREATE PARTITION FUNCTION RangePF1 ( int )
AS RANGE FOR VALUES (10, 100, 1000) ;
GO
SELECT $PARTITION.RangePF1 (10) ;
GO
B.Bölümlenmiş tablo veya dizin boş olmayan her bölümünde satır sayısını alma
Aşağıdaki örnek tablo her bölümünde satır sayısını verir TransactionHistoryveri içeren. TransactionHistoryTablo bölümü işlevini kullanan TransactionRangePF1ve üzerinde bölümlenmiş TransactionDatesütun.
Bu örneği çalıştırmak için karşı PartitionAW.sql komut dosyasını çalıştırmanız gerekir AdventureWorks2012 örnek veritabanı. Daha fazla bilgi için bkz: PartitioningScript.
USE AdventureWorks2012;
GO
SELECT $PARTITION.TransactionRangePF1(TransactionDate) AS Partition,
COUNT(*) AS [COUNT] FROM Production.TransactionHistory
GROUP BY $PARTITION.TransactionRangePF1(TransactionDate)
ORDER BY Partition ;
GO
USE AdventureWorks2012;
GO
SELECT $PARTITION.TransactionRangePF1(TransactionDate) AS Partition,
COUNT(*) AS [COUNT] FROM Production.TransactionHistory
GROUP BY $PARTITION.TransactionRangePF1(TransactionDate)
ORDER BY Partition ;
GO
C.Bölümlenmiş tablo veya dizin bir bölümünden tüm satırları döndüren
Aşağıdaki örnek, bölüm olan tüm satırları verir 5tablo TransactionHistory.
[!NOT]
Bu örneği çalıştırmak için karşı PartitionAW.sql komut dosyasını çalıştırmanız gerekir AdventureWorks2012 örnek veritabanı. Daha fazla bilgi için bkz: PartitioningScript.
SELECT * FROM Production.TransactionHistory
WHERE $PARTITION.TransactionRangePF1(TransactionDate) = 5 ;
SELECT * FROM Production.TransactionHistory
WHERE $PARTITION.TransactionRangePF1(TransactionDate) = 5 ;