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

SQL Server(T-SQL)でデータベースメールの既定のパブリックプロファイルを作成する

    sp_send_dbmailを使用する場合 SQL Serverで電子メールを送信するためのストアドプロシージャには、通常、@profile_nameを含めます。 使用するプロファイルを指定する引数。

    ただし、この引数を省略すると、sp_send_dbmail 現在のユーザーのデフォルトのプライベートプロファイルを使用します。ユーザーがデフォルトのプライベートプロファイルを持っていない場合は、sp_send_dbmail msdbのデフォルトのパブリックプロファイルを使用します データベース。

    これらのいずれも構成されていない場合、次のエラーが発生します:

    Msg 14636, Level 16, State 1, Procedure msdb.dbo.sp_send_dbmail, Line 112
    No global profile is configured. Specify a profile name in the @profile_name parameter.

    このエラーが発生した場合は、基本的に3つのオプションがあります。

    • @profile_nameを含めて、使用するプロファイルを指定します sp_send_dbmailを呼び出すときの引数 手順。
    • 現在のユーザーのデフォルトのプライベートプロファイルを作成します。
    • msdbのパブリックプロファイルを作成します データベース。

    この記事では、3番目のオプションの例を示します。msdbのパブリックプロファイルを作成します データベース。

    これは、データベースメールプロファイルを作成し、データベースメールアカウントを作成し、アカウントをプロファイルに追加してから、そのプロファイルへのパブリックアクセスを許可するプロセスを実行する例です。

    -- Create a Database Mail profile  
    EXECUTE msdb.dbo.sysmail_add_profile_sp  
        @profile_name = 'DB Public Profile',  
        @description = 'Public Profile for emails.'; 
    
    -- Create a Database Mail account  
    EXECUTE msdb.dbo.sysmail_add_account_sp
        @account_id = 1,
        @account_name = 'DB Public',  
        @description = 'Public account for emails.',  
        @email_address = '[email protected]',  
        @replyto_address = '[email protected]',  
        @display_name = 'DB Public Mailer',  
        @mailserver_name = 'smtp.example',
        @port = 587;
    
    -- Add the account to the profile  
    EXECUTE msdb.dbo.sysmail_add_profileaccount_sp  
        @profile_name = 'DB Public Profile',  
        @account_name = 'DB Public',  
        @sequence_number = 1;
    
    -- Grant the public principal access to the profile
    EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
        @profile_name = 'DB Public Profile',
        @principal_name = 'public',
        @is_default = 1;

    最後の行は、実際にはそれをデフォルトのパブリックプロファイルにする部分です。

    @is_default = 1を使用する 、このプロファイルをデフォルトのパブリックプロファイルに設定しています。 @is_default = 0を使用した場合 代わりに、デフォルトのパブリックプロファイルではありません。

    プロファイルを公開するには、@principal_idを指定します 0の または@principal_name publicの 。公開プロファイルは、msdbのすべてのユーザーが利用できます データベース(ただし、ユーザーはDatabaseMailUserRoleのメンバーでもある必要があります sp_send_dbmailを実行します 。

    デフォルトのパブリックプロファイルは1つだけであることに注意してください。

    既存のプロファイルを更新する

    すでに公開プロファイルを持っているが、それがデフォルトの公開プロファイルではない場合は、sysmail_update_principalprofile_spを使用できます。 それを変えるために。

    例:

    EXECUTE msdb.dbo.sysmail_update_principalprofile_sp
        @profile_name = 'DB Public Profile',
        @principal_name = 'public',
        @is_default = 1;


    1. 修正方法:JSON_VALUEは長い文字列でNULLを返します(SQL Server)

    2. EXPORT AS INSERT STATEMENTS:しかし、SQL Plusでは、行は2500文字を上書きします!

    3. 12cのSQL​​Tは統計を収集できません

    4. データベースサーバーのハードウェアトレンド