sql >> データベース >  >> RDS >> Sqlserver

SQLServerからメールを送信するときの「プロファイル名が無効です」を修正

    SQL Serverからメールを送信しようとしても、「プロファイル名が無効です」というメッセージが表示された場合は、@profile_nameに有効なプロファイルを指定していない可能性があります。 引数。

    たとえば、次のT-SQLコードを使用して、SQLServerエージェントジョブが失敗するたびに管理者に通知メールを送信するとします。

    EXEC msdb.dbo.sp_send_dbmail  
        @profile_name = 'DB Admin Profile',  
        @recipients = '[email protected]',  
        @body = 'Your favorite SQL Server Agent job just failed',  
        @subject = 'SQL Server Agent Job: FAILED';

    ただし、次のエラーが発生します:

    Msg 14607, Level 16, State 1, Procedure msdb.dbo.sysmail_verify_profile_sp, Line 42
    profile name is not valid

    このエラーは、「プロファイル名が無効です」ことを具体的に示しています。

    データベースメールを使用して電子メールを送信するには、ユーザーアカウントではなく、プロファイルを直接指定する必要があります。この場合、@profile_nameを指定しました DB Admin Profileの 、しかしそのようなプロファイルは実際には存在しません。

    メールを送信する前に、msdbにユーザーを追加する必要があります。 データベースを作成し、データベースメールアカウントを作成してから、プロファイルを作成し、データベースメールアカウントをそのプロファイルに追加します。次に、ユーザーをプロファイルに追加する必要があります。

    全体として、次のようになります。

    -- Switch to the msdb database
    USE msdb;
    
    -- Create a user on the msdb database
    CREATE USER Marge FOR LOGIN Marge;
    
    -- Create a Database Mail account  
    EXECUTE msdb.dbo.sysmail_add_account_sp  
        @account_name = 'DB Admin',  
        @description = 'Mail account for admin emails.',  
        @email_address = '[email protected]',  
        @replyto_address = '[email protected]',  
        @display_name = 'DB Automated Mailer',  
        @mailserver_name = 'smtp.example.com',
        @port = 25;  
      
    -- Create a Database Mail profile  
    EXECUTE msdb.dbo.sysmail_add_profile_sp  
        @profile_name = 'DB Admin Profile',  
        @description = 'Profile for admin emails.';  
      
    -- Add the account to the profile  
    EXECUTE msdb.dbo.sysmail_add_profileaccount_sp  
        @profile_name = 'DB Admin Profile',  
        @account_name = 'DB Admin',  
        @sequence_number = 1;
      
    -- Grant user access to the Database Mail profile
    EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
        @profile_name = 'DB Admin Profile',
        @principal_name = 'Marge',
        @is_default = 1;

    もちろん、さまざまな詳細を独自のものに置き換える必要があります。これは、機能するメールサーバーを指定することも前提としています。

    完了すると、メールを送信する準備が整います。


    1. ストアドプロシージャにテーブル名を渡すにはどうすればよいですか?

    2. R12.1.3で同時リクエストを送信する際の配信オプション

    3. SQLiteデータベースから取得した各アイテムを独自のTextviewに設定する方法

    4. SQL Server ROWCOUNT_BIG()