Joe*_*moe 7 sql-server sql-server-agent
我想重命名 SQL Server Agent 操作员,即更改它的名称。
这是一件“有效”的事情吗?我注意到尝试通过操作员/属性对话框更改 SSMS 中的名称实际上并没有做任何事情。但是,在对象资源管理器中单击选定的运算符也允许您重命名它并产生所需的结果。
我的另一个担忧是设置为使用旧操作员姓名发送通知的现有作业。我不希望他们无法发送通知,但另一方面又希望避免手动更改所有通知。我查了一下,发现msdb中的dbo.sysjobs表使用的是operator ID,所以看起来应该不是问题。我还在测试作业中尝试了它,在重命名操作员后,一切仍然按预期工作,而且作业属性显示新的操作员名称,而我无需执行任何操作。所以看起来它根本不应该引起任何问题,但我想对此进行一些确认。
为了更改名称(或运算符的任何其他属性),您需要调用msdb.dbo.sp_update_operator. 例如:
exec msdb.dbo.sp_update_operator
@name = 'OldOperatorName',
@new_name = 'NewOperatorName';
go
Run Code Online (Sandbox Code Playgroud)
至于 SSMS:您在 SSMS 中所做的大多数事情都必须选择脚本化您在 GUI 中所做的更改。因此,无需点击Ok,您可以选择顶部的Script按钮以查看 T-SQL SSMS 将执行的内容。似乎即使更改了名称(即更改了名称文本框中的文本),生成的 T-SQL 也不包含@new_name存储过程调用的指定参数。
故事的道德启示? 不要依赖 UI。如果您想完全控制正在发生的事情,那么您应该使用 T-SQL。如果您正在编写代码来做您想做的事,您将毫无疑问。没有假设,什么都没有。
关于更改名称,SQL Server 存储操作符的 ID 以创建通知 -> 操作符之间的关联,而不是操作符名称。所以不,您不受运营商名称的约束,我认为更改运营商的名称不会破坏任何内容。