SQLエージェントオペレーターのアラートに100文字以上の電子メールアドレスを追加したい。
例えば: [email protected];[email protected];[email protected];....
Sysoperatorsのemail_address列を変更することで、100文字の制限を回避しようとしました
ALTER TABLE sysoperators
ALTER column email_address NVARCHAR(1000);
それから私のオペレーターを作成しましたが、アドレスはまだ100文字でカットされていますか?
あなたができるからといって、あなたがそうすべきだという意味ではありません。以下の変更は適用しないでください。この回答は、システムテーブルやシステムプロシージャを変更してはならない理由と、問題が発生する可能性がある理由を示すためのものです。
msdb.dbo.sp_add_operator
Ssms guiでオペレーターを追加すると、_msdb.dbo.sp_add_operator
_がバックグラウンドで呼び出されます。
使用される電子メールアドレスパラメータもnvarchar(100)
です。
理論的には、手順を変更することで手順を適合させることができます
そして、_@email_address
_パラメータをnvarchar(1000)
に変更します
次に384文字(非GUI)で実行した場合
_USE [msdb]
GO
EXEC msdb.dbo.sp_add_operator @name=N'test',
@enabled=1,
@pager_days=0,
@email_address=N'[email protected];[email protected];[email protected];[email protected];[email protected];[email protected];[email protected];[email protected];[email protected];[email protected];[email protected];[email protected];[email protected];[email protected];[email protected];[email protected];[email protected];[email protected];'
GO
_
長さを取得する:
_select LEN(email_address) as email_length
from sysoperators
where name = 'test';
_
384文字あることを示しています。
_email_length
384
_
ただし、ssmsを介して開くと、すぐに壊れる演算子の1つが演算子リストです。
このクエリを実行するssmsのため:
_create table #tmp_sp_help_operator
(id int null, name nvarchar(128) null, enabled tinyint null, email_address nvarchar(100) null, last_email_date int null, last_email_time int null, pager_address nvarchar(100) null, last_pager_date int null, last_pager_time int null, weekday_pager_start_time int null, weekday_pager_end_time int null, saturday_pager_start_time int null, saturday_pager_end_time int null, sunday_pager_start_time int null, sunday_pager_end_time int null, pager_days tinyint null, netsend_address nvarchar(100) null, last_netsend_date int null, last_netsend_time int null, category_name nvarchar(128) null)
insert into #tmp_sp_help_operator exec msdb.dbo.sp_help_operator
SELECT
tsho.name AS [Name],
'Server[@Name=' + quotename(CAST(
serverproperty(N'Servername')
AS sysname),'''') + ']' + '/JobServer' + '/Operator[@Name=' + quotename(tsho.name,'''') + ']' AS [Urn],
CAST(tsho.enabled AS bit) AS [Enabled]
FROM
#tmp_sp_help_operator AS tsho
ORDER BY
[Name] ASC
drop table #tmp_sp_help_operator
_
システムテーブルとプロシージャでしない必要がある理由を示します。
テーブルと手順を変更したときに何が機能し、何が機能しなくなるかは誰にもわかりません。
vonPryz のような配布リストは、はるかに優れたソリューションになります。