Это происходит от вашей конкатенации числа к строке в блоке catch
. Это не разрешается без приведения, так как он пытается преобразовать строку в число, а не наоборот, и поскольку ваш строковый литерал не является числовым, эта попытка обречена на провал!
Вы можете использовать RAISERROR
со степенью серьезности 0, чтобы напечатать сообщение со значениями, подставленными в, или альтернативой является самостоятельная конкатенация строки с использованием явных приведений.
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