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

SQL Server(T-SQL)のデータベースメールプロファイルへのmsdbユーザーアクセスを許可する

    SQL Serverでデータベースメールを使用して電子メールを送信するには、ユーザーは DatabaseMailUserRoleのメンバーである必要があります msdbで データベースであり、少なくとも1つのデータベースメールプロファイルにアクセスできます。

    T-SQLを使用してデータベースメールプロファイルへのアクセスをユーザーに許可するには、sysmail_add_principalprofile_spを使用します msdbのストアドプロシージャ データベース。

    実例を示します。

    EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
        @profile_name = 'DB Admin Profile',
        @principal_name = 'Marge',
        @is_default = 1;

    この場合、ユーザーにプロファイル「DB管理者プロファイル」への「マージ」アクセスを許可します。

    これは、プロファイルとユーザーがすでに存在していることを前提としています。

    この場合、@is_default = 1も指定しました 、これがユーザーのデフォルトプロファイルになります。

    ユーザー/プロファイルIDを指定する

    または、名前の代わりにユーザーIDやアカウントIDを指定することもできます。

    したがって、前の例を次のように変更できます。

    EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
        @profile_id = 1,
        @principal_id = 25,
        @is_default = 1;

    これは明らかに、それらが問題のアカウントのIDであることを前提としています。

    名前またはIDのいずれかを指定する必要があることに注意してください。

    また、IDを提供する場合、IDは intとして提供されます。 。

    sysmail_add_principalprofile_spに注意してください ストアドプロシージャはmsdbにあります データベースであり、dboが所有しています スキーマ。したがって、msdbの外部から実行する場合は、3つの部分からなる命名を使用する必要があります。 データベース。

    公開プロフィール

    msdb で、プロファイルをユーザーのデフォルトのパブリックプロファイルにすることもできます。 データベース。

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

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

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

    データベースメールの設定

    上記の手順は、データベースメールプロファイルをすでに作成し、そのプロファイルに少なくとも1つのデータベースメールアカウントを追加していることを前提としています。

    データベースメールを構成してから電子メールを送信する完全な例については、SQLServerで電子メールを送信する方法を参照してください。


    1. 無効な共通ユーザーまたはロール名

    2. 書痙なしで、1つまたは2つのフィールドを除いて、すべてを選択できますか?

    3. SQL Serverで同等のデータベースを表示– sp_databases

    4. MySQLPHPの非互換性