Umbenennen des SQL Server-Agent-Operators

7

Ich möchte den SQL Server-Agentenoperator umbenennen, dh seinen Namen ändern.

Ist das eine "gültige" Sache? Ich habe festgestellt, dass der Versuch, den Namen in SSMS über das Dialogfeld "Operator / Eigenschaften" zu ändern, eigentlich nichts bewirkt. Durch Klicken auf den ausgewählten Operator im Objekt-Explorer können Sie ihn jedoch auch umbenennen und das gewünschte Ergebnis erzielen.

Mein anderes Problem sind vorhandene Jobs, die zum Senden von Benachrichtigungen unter Verwendung des alten Betreibernamens eingerichtet wurden. Ich möchte nicht, dass sie keine Benachrichtigungen senden, möchte aber andererseits vermeiden, alle manuell zu ändern. Ich habe ein bisschen herumgegraben und festgestellt, dass die Tabelle dbo.sysjobs in msdb die Operator-ID verwendet. Es scheint also, dass dies kein Problem sein sollte. Ich habe es auch bei einem Testjob versucht und nach dem Umbenennen des Operators funktionierte alles wie erwartet, und die Job-Eigenschaften zeigten einen neuen Operatornamen an, ohne dass ich etwas tun musste. Es sieht also so aus, als ob es überhaupt keine Probleme verursachen sollte, aber ich möchte eine Bestätigung dazu.

Joe Schmoe
quelle

Antworten:

9

Um den Namen (oder eine andere Eigenschaft eines Operators) zu ändern, rufen Sie an msdb.dbo.sp_update_operator. Zum Beispiel:

exec msdb.dbo.sp_update_operator 
    @name = 'OldOperatorName', 
    @new_name = 'NewOperatorName';
go

Was SSMS betrifft: Bei den meisten Dingen, die Sie in SSMS ausführen, müssen Sie die Änderungen, die Sie in der GUI vornehmen, per Skript ausführen. Also, ohne auf Ok , können Sie die wählen Script - Schaltfläche oben , um zu sehen , was von T-SQL SSMS wird ausgeführt werden . Es scheint, als ob das generierte T-SQL selbst bei einem geänderten Namen (dh einem geänderten Text im Textfeld Name) keinen angegebenen @new_nameParameter für den Aufruf der gespeicherten Prozedur enthält.

Moral der Geschichte? Verlassen Sie sich nicht auf eine Benutzeroberfläche. Wenn Sie die volle Kontrolle darüber haben möchten, was passiert, sollten Sie T-SQL verwenden. Sie werden keine Frage haben, ob Sie den Code schreiben, um das zu tun, was Sie wollen. Keine Annahmen, nichts.

In Bezug auf das Ändern des Namens speichert SQL Server die ID des Operators, um die Korrelation zwischen Benachrichtigung -> Operator und nicht dem Operatornamen herzustellen. Also nein, Sie sind nicht an den Namen des Operators gebunden und ich glaube nicht, dass eine Änderung des Namens des Operators irgendetwas kaputt macht.

Thomas Stringer
quelle