Suche…


Partitionsgrenzwerte abrufen

SELECT        ps.name AS PartitionScheme
            , fg.name AS [FileGroup]
            , prv.*            
            , LAG(prv.Value) OVER (PARTITION BY ps.name ORDER BY ps.name, boundary_id) AS PreviousBoundaryValue

FROM        sys.partition_schemes ps
INNER JOIN    sys.destination_data_spaces dds
            ON dds.partition_scheme_id = ps.data_space_id
INNER JOIN    sys.filegroups fg
            ON dds.data_space_id = fg.data_space_id
INNER JOIN    sys.partition_functions f
            ON f.function_id = ps.function_id
INNER JOIN    sys.partition_range_values prv
            ON f.function_id = prv.function_id
            AND dds.destination_id = prv.boundary_id

Partitionen wechseln

Gemäß dieser [TechNet-Microsoft-Seite] [1]

Durch die Partitionierung von Daten können Sie Teilmengen Ihrer Daten schnell und effizient verwalten und auf sie zugreifen, während die Integrität der gesamten Datenerfassung erhalten bleibt.

Wenn Sie die folgende Abfrage aufrufen, werden die Daten nicht physisch verschoben. Nur die Metadaten zum Speicherort der Daten ändern sich.

ALTER TABLE [SourceTable] SWITCH TO [TargetTable]

Die Tabellen müssen dieselben Spalten mit denselben Datentypen und NULL-Einstellungen aufweisen, sie müssen sich in derselben Dateigruppe befinden und die neue Zieltabelle muss leer sein. Weitere Informationen zum Wechseln von Partitionen finden Sie unter dem Seitenlink oben.

[1]: https://technet.microsoft.com/en-us/library/ms191160(v=sql.105).aspx Die IDENTITY Eigenschaft der Spalte kann abweichen.

Rufen Sie die Werte der Partitionstabelle, der Spalte, des Schemas, der Funktion, der Gesamtzahl und der Min-Max-Grenze mithilfe einer einzelnen Abfrage ab

SELECT DISTINCT
    object_name(i.object_id) AS [Object Name],
    c.name AS [Partition Column],
    s.name AS [Partition Scheme],
    pf.name AS [Partition Function],
    prv.tot AS [Partition Count],
    prv.miVal AS [Min Boundry Value],
    prv.maVal AS [Max Boundry Value]
FROM sys.objects o 
INNER JOIN sys.indexes i ON i.object_id = o.object_id
INNER JOIN sys.columns c ON c.object_id = o.object_id
INNER JOIN sys.index_columns ic ON ic.object_id = o.object_id
    AND ic.column_id = c.column_id
    AND ic.partition_ordinal = 1
INNER JOIN sys.partition_schemes s ON i.data_space_id = s.data_space_id
INNER JOIN sys.partition_functions pf ON pf.function_id = s.function_id
OUTER APPLY(SELECT 
                COUNT(*) tot, MIN(value) miVal, MAX(value) maVal 
            FROM sys.partition_range_values prv 
            WHERE prv.function_id = pf.function_id) prv
--WHERE object_name(i.object_id) = 'table_name'
ORDER BY OBJECT_NAME(i.object_id)

Sie müssen nur die where Klausel table_name und den table_name durch den actual table name ersetzen, um die Details des gewünschten Objekts anzuzeigen.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow