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 :
Une fois la base créée je dois mettre en place mes schémas, puis mes tables et mes Index.
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]')
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é unmais j'ai droit à un superbe
Code : Sélectionner tout - Visualiser dans une fenêtre à part Execute('CREATE SCHEMA ['+@DBName+'].[mes]')J'imagine que l'on ne peut préfixer le nom de la DB à l'avance...Syntaxe incorrecte vers '.'
J'ai aussi tenté un, qui me renvoie un
Code : Sélectionner tout - Visualiser dans une fenêtre à part Execute('use '+@DBName+';CREATE SCHEMA [mes]')Et après mes schémas je dois créer mes databases et mes index... pas couché donc.'CREATE SCHEMA' doit être la première instruction d'un lot de requêtes.
Si quelqu'un peut m'indiquer une procédure pour réaliser ces créations dynamiques, je lui en serai reconnaissant.![]()
Partager