Ricerca…


Recupera i valori al contorno della partizione

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

Commutazione delle partizioni

Secondo questa [pagina TechNet Microsoft] [1],

Il partizionamento dei dati consente di gestire e accedere ai sottoinsiemi dei tuoi dati in modo rapido ed efficiente mantenendo l'integrità dell'intera raccolta di dati.

Quando si chiama la seguente query, i dati non vengono spostati fisicamente; solo i metadati relativi alla posizione dei dati cambiano.

ALTER TABLE [SourceTable] SWITCH TO [TargetTable]

Le tabelle devono avere le stesse colonne con gli stessi tipi di dati e le stesse impostazioni NULL, devono essere nello stesso gruppo di file e la nuova tabella di destinazione deve essere vuota. Vedi il link alla pagina qui sopra per maggiori informazioni sul cambio di partizione.

[1]: https://technet.microsoft.com/en-us/library/ms191160(v=sql.105).aspx La proprietà IDENTITY colonna potrebbe essere diversa.

Richiama i valori della tabella delle partizioni, della colonna, dello schema, della funzione, del totale e del minimo e massimo utilizzando una singola query

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)

Basta annullare un commento where clausola e sostituire table_name con actual table name per visualizzare i dettagli dell'oggetto desiderato.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow