Obje araDBA.usp_SendMail
Demo modu

DBA.usp_SendMail

yordam

DB-12 · değişiklik 9.10.2026 · Obje aramaya dön

İfadeler

0 ifade · 0 çalışma · toplam 0,0 sn

Kayıt yok

Dönemde bu nesneye ait çalışma yok.

Bağımlılıklar

Doğrudan referanslar (sys.sql_expression_dependencies); dinamik SQL ve geç bağlanan adlar görünmeyebilir.
DBA.usp_SendMailDBA.usp_SendMail DBA.usp_Notify_CollectionDB-12.DBA.usp_Notify_Collection · aynı veritabanı DBA.fn_GetSettingNvarcharDB-12.DBA.fn_GetSettingNvarchar · aynı veritabanı DBA.NotificationLogDB-12.DBA.NotificationLog · aynı veritabanı msdb.dbo.sp_send_dbmailmsdb.dbo.sp_send_dbmail · başka veritabanı msdb.dbo.sysmail_principalpro…msdb.dbo.sysmail_principalprofile · başka veritabanı msdb.dbo.sysmail_profilemsdb.dbo.sysmail_profile · başka veritabanıKullananlar Kullandıkları
aynı veritabanıbaşka veritabanılinked server
YönNesneTürKapsam
kullanıyor DBA.fn_GetSettingNvarchar fonksiyon aynı veritabanı
kullanıyor DBA.NotificationLog tablo aynı veritabanı
kullanıyor msdb.dbo.sp_send_dbmail – başka veritabanı
kullanıyor msdb.dbo.sysmail_principalprofile – başka veritabanı
kullanıyor msdb.dbo.sysmail_profile – başka veritabanı
kullanan DBA.usp_Notify_Collection yordam aynı veritabanı
Tanım
-- Tek gönderim yolu: Database Mail kapalıysa ya da profil yoksa göndermez (Skipped + neden). tSQLt bu yordamı taklit eder.
CREATE   PROCEDURE DBA.usp_SendMail
    @Kind varchar(20), @Subject nvarchar(255), @Body nvarchar(max), @Status varchar(10) OUTPUT
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @to nvarchar(1000) = NULLIF(LTRIM(RTRIM(DBA.fn_GetSettingNvarchar(N'Notify.MailRecipients', N''))), N''),
            @profile sysname = NULLIF(LTRIM(RTRIM(DBA.fn_GetSettingNvarchar(N'Notify.MailProfile', N''))), N''),
            @detail nvarchar(2000) = NULL;
    SET @Status = 'Skipped';
    IF @to IS NULL SET @detail = N'Alıcı yok (Notify.MailRecipients).';
    ELSE IF ISNULL((SELECT CAST(value_in_use AS int) FROM sys.configurations WHERE name = N'Database Mail XPs'), 0) = 0
        SET @detail = N'Database Mail kapalı (Database Mail XPs = 0).';
    ELSE IF @profile IS NOT NULL AND NOT EXISTS (SELECT 1 FROM msdb.dbo.sysmail_profile WHERE name = @profile)
        SET @detail = N'Database Mail profili yok: ' + @profile;
    ELSE IF @profile IS NULL AND NOT EXISTS (SELECT 1 FROM msdb.dbo.sysmail_principalprofile WHERE is_default = 1)
        SET @detail = N'Varsayılan Database Mail profili yok; Notify.MailProfile ayarlanmalı.';
    ELSE
    BEGIN
        BEGIN TRY
            EXEC msdb.dbo.sp_send_dbmail @profile_name = @profile, @recipients = @to, @subject = @Subject, @body = @Body;
            SET @Status = 'Sent';
        END TRY
        BEGIN CATCH
            SELECT @Status = 'Error', @detail = LEFT(ERROR_MESSAGE(), 2000);
        END CATCH
    END
    INSERT DBA.NotificationLog (Kind, Recipients, Subject, Status, Detail) VALUES (@Kind, @to, @Subject, @Status, @detail);
END;

Bu nesnenin analizleri

Kayıt yok

Bu nesne için analiz yok.