On a case insensitive server, those two names are identical. I am not sure if you are using the UI for this, but I get the same error when I run the following code:
EXEC dbo.sp_add_operator @name = N'NIT and Arts';
EXEC dbo.sp_update_operator @name = N'NIT and Arts', @new_name = N'NIT and ARTS';
Msg 14261, Level 16, State 1, Procedure sp_verify_operator, Line 38
The specified @name ('NIT and ARTS') already exists.
If we look at the code for
sp_verify_operator, we see that there is a weakness here as a penalty for not using a surrogate key: it checks all existing rows for a match on name, including the row you are trying to change:
-- The name must be unique
IF (EXISTS (SELECT *
WHERE (name = @name)))
RAISERROR(14261, 16, 1, '@name', @name)
Ideally, it should ignore the row you are trying to change, but it can't because there is no way to filter except by the name. And in a case sensitive collation, the above check fails because that row already has that name.
How do we work around this? Well you could rebuild msdb or something in a case sensitive or binary collation, but I think this is easier, just run this query manually:
SET name = N'NIT and ARTS'
WHERE name = N'NIT and Arts';