Bonjour j'essaie d'exécuter une requête sur plusieurs base d'un serveur. Cette requête doit me ramener une valeur pour insertion. Je me suis fait une procédure pour ça mais elle plante à l'exécution. Cette procédure doit recurper la taille des fichier mdf de chaque base et stoker les valeur dans une table.
Mon problème vient de l'utilisation de sp_executesql que je ne maitrise pas encore correctement.
Voilà ce que j'obtiens comme erreur :
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 procedure [dbo].[mesurer_taille_bases] as begin set nocount on declare @tmp_taille int declare @tmp_pk_id_base uniqueidentifier declare @tmp_nom_base nvarchar(100) declare @tmp_requete nvarchar(500) declare @tmp_param_def nvarchar(500) declare liste_base_cursor cursor for select pk_id, nom from base open liste_base_cursor fetch next from liste_base_cursor into @tmp_pk_id_base, @tmp_nom_base while @@fetch_status = 0 begin -- select @tmp_taille= 8 * SUM(CONVERT(DEC(15),SIZE)) FROM dbo.sysfiles where name like '%data' set @tmp_requete = N'select @tmp_tailleOUT OUT = 8 * SUM(CONVERT(DEC(15),SIZE)) FROM '+@tmp_nom_base+'.dbo.sysfiles where name like ''%data''' set @tmp_param_def = N'@tmp_tailleOUT int OUTPUT' exec sp_executesql @tmp_requete, @tmp_param_def, @tmp_tailleOUT=@tmp_taille OUTPUT insert into taille_base ( pk_id, fk_base, taille, date_etalonnage ) values ( newid(), @tmp_pk_id_base, @tmp_taille, getdate() ) fetch next from liste_base_cursor into @tmp_pk_id_base, @tmp_nom_base end close liste_base_cursor deallocate liste_base_cursor end
Quelqu'un à une solution?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Msg*102, Niveau*15, État*1, Ligne*1 Syntaxe incorrecte vers '='. Msg*515, Niveau*16, État*2, Procédure*mesurer_bases, Ligne*27 Impossible d insérer la valeur NULL dans la colonne taille, table GESEXPSR2.dbo.taille_base. Cette colonne n'accepte pas les valeurs NULL. Échec de INSERT. L instruction a été arrêtée. Msg*102, Niveau*15, État*1, Ligne*1 Syntaxe incorrecte vers '='. Msg*515, Niveau*16, État*2, Procédure*mesurer_bases, Ligne*27 Impossible d insérer la valeur NULL dans la colonne taille, table GESEXPSR2.dbo.taille_base. Cette colonne n'accepte pas les valeurs NULL. Échec de INSERT. L instruction a été arrêtée.
Partager