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)
puis, "y a qu'à, faut qu'on"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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 ?
Partager