Bonjour,

je cherche à créer X base de données, chacune ayant le même format. Vu la répétitivité de l'opération, je pensais faire un script SQL :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
declare @DateRef int
declare @DateFin int 
 
set @DateRef = 2011
set @DateFin = 2011--Idem pour les tests
 
while @DateRef <= @DateFin
begin
	declare @DBName varchar(30)
	set @DBName = 'Historique'+cast(@DateRef as varchar)
 
	print @DBName
	Execute('CREATE Database '+@DBName)
        -- Les soucis commencent ici
	Execute('CREATE SCHEMA [mes]')
	Execute('CREATE SCHEMA [sth]')
Une fois la base créée je dois mettre en place mes schémas, puis mes tables et mes Index.

Mon souci est de me situer sur la table nouvellement créé. Apparemment Execute('use '+@DBName) ne fournit le contexte que le temps de l'exécution de la commande execute (donc à la fin du traitement me revoilà dans master).

J'ai tenté un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Execute('CREATE SCHEMA ['+@DBName+'].[mes]')
mais j'ai droit à un superbe
Syntaxe incorrecte vers '.'
J'imagine que l'on ne peut préfixer le nom de la DB à l'avance...

J'ai aussi tenté un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Execute('use '+@DBName+';CREATE SCHEMA [mes]')
, qui me renvoie un
'CREATE SCHEMA' doit être la première instruction d'un lot de requêtes.
Et après mes schémas je dois créer mes databases et mes index... pas couché donc.

Si quelqu'un peut m'indiquer une procédure pour réaliser ces créations dynamiques, je lui en serai reconnaissant.