2011-04-08 5 views
0

Msg 245, niveau 16, état 1, ligne 89 La conversion a échoué lors de la conversion de la valeur varchar 'Une erreur s'est produite lors de la création de l'assembly System.DirectoryServices. 'au type de données int.Erreur lors de la conversion de varchar en int?

Cette erreur est causée par la déclaration suivante:

begin try print ' - Preparing to create System.DirectoryServices assembly with UNSAFE_ACCESS permission' 
    create assembly [System.DirectoryServices] from 'c:\Windows\Microsoft.NET\Framework\v2.0.50727\System.DirectoryServices.dll' 
    with permission_set = unsafe 
    print ' - System.DirectoryServices assembly created' 
end try 
begin catch 
    print 'There was an error creating the System.DirectoryServices assembly. '+Error_number()+Error_Severity() 
end catch 

Répondre

2

Cela vient de votre concaténation du numéro à chaîne dans le bloc catch. Ceci n'est pas autorisé sans conversion car il essaie de convertir la chaîne en nombre plutôt que vice versa et comme votre chaîne de caractères n'est pas numérique, cette tentative est vouée à l'échec!

Vous pouvez utiliser RAISERROR avec la gravité 0 pour imprimer le message avec les valeurs substituées ou l'alternative est de concaténer la chaîne vous-même en utilisant des conversions explicites.

begin catch 
declare @num int = Error_number() 
declare @sev int = Error_Severity() 
raiserror('There was an error creating the System.DirectoryServices assembly. %d %d ',0,1, @num,@sev) 
end catch 
Questions connexes