Problème avec sp_executesql
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.
Code:
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 |
Voilà ce que j'obtiens comme erreur :
Code:
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. |
Quelqu'un à une solution?