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 : 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
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 ?