Générateur de partition de tables
Bonjour à tous,
Je suis sur un projet pour scripter en automatique des partitions "rotatives"
Par rotative j'entends des partitions dont tous les index sont alignés ; ce qui permet, en fin de période de supprimer une partition et d'en créer une autre.
Point important : le partitionnement est mensuel
la première opération consiste à créer une table de définition des tables à partitionner (qui, comment)
Code:
1 2 3 4 5 6 7 8 9 10 11
| CREATE SCHEMA [PARTITIONS] AUTHORIZATION [DBO]
go
CREATE TABLE [PARTITIONS].partitions_table_desc
(id int not NULL identity primary KEY
, schema_name sysname not NULL
, table_name sysname not NULL
, partition_filegroup_name sysname not NULL
, col_date_name sysname not NULL
, nb_month_to_retain int not NULL
)
go |
puis, "y a qu'à, faut qu'on"
J'identifie 3 possibles :
1- la table n'a pas d'index unique
2- la table n'a qu'un index unique et il est mono-colonnne identity **
3- c'est pas possible
note ** : il est admis que la correspondance entre la valeur identity et la valeur de colonne de date discriminante est 'suffisamment' cohérente pour envisager une translation
J'arrive assez bien à gérer les points 1 et 3 (surtout le 3 ;) )
Par contre le point 2 me pose problème dans l'écriture d'un SQL dynamique pour créer la fonction de partition.
C'est plus particulièrement la production de la liste des bornes de la fonction -pour chaque ligne de la table de décision- qui me pose problème
Je pense qu'avec boucles, des curseurs et du SQL dynamique je peux en arriver à bout, mais j'aimerai écrire ça avec un maximum de SQL (et un minimum de TSQL)
Est-ce que vous avez une solution pour ça ?