sql >> Database teknologi >  >> RDS >> Sqlserver

Opret en standard offentlig profil til databasemail i SQL Server (T-SQL)

Når du bruger sp_send_dbmail gemt procedure til at sende e-mails i SQL Server, vil du typisk inkludere @profile_name argument for at angive, hvilken profil der skal bruges.

Men hvis du udelader dette argument, sp_send_dbmail vil bruge den private standardprofil for den aktuelle bruger. Hvis brugeren ikke har en standard privat profil, sp_send_dbmail vil bruge den offentlige standardprofil for msdb database.

Hvis ingen af ​​disse er konfigureret, får du følgende fejlmeddelelse:

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.

Hvis du får denne fejl, har du grundlæggende tre muligheder:

  • Angiv, hvilken profil der skal bruges, ved at inkludere @profile_name argument, når du kalder sp_send_dbmail procedure.
  • Opret en privat standardprofil for den aktuelle bruger.
  • Opret en offentlig profil for msdb database.

Denne artikel giver et eksempel på den tredje mulighed:opret en offentlig profil for msdb database.

Eksempel

Her er et eksempel, der går gennem processen med at oprette en Database Mail-profil, oprette en Database Mail-konto, tilføje kontoen til profilen og derefter give offentlig adgang til den profil.

-- 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;

Den sidste linje er faktisk den del, der gør den til den offentlige standardprofil.

Ved at bruge @is_default = 1 , jeg indstiller denne profil til at være den offentlige standardprofil. Hvis jeg havde brugt @is_default = 0 i stedet ville det ikke være den offentlige standardprofil.

For at gøre en profil offentlig, skal du angive en @principal_id af 0 eller en @principal_name af public . En offentlig profil er tilgængelig for alle brugere i msdb database (selvom brugere også skal være medlem af DatabaseMailUserRole for at udføre sp_send_dbmail ).

Bemærk, at der kun kan være én offentlig standardprofil.

Opdater en eksisterende profil

Hvis du allerede har en offentlig profil, men det ikke er den offentlige standardprofil, kan du bruge sysmail_update_principalprofile_sp for at ændre det.

Eksempel:

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


  1. Betinget WHERE-klausul med CASE-sætning i Oracle

  2. hvordan man tilføjer anden i oracle tidsstempel

  3. Hvorfor skal jeg bruge int i stedet for en byte eller short i C#

  4. Fatal fejl:Ufanget undtagelse 'mysqli_sql_exception' med beskeden 'Intet indeks brugt i forespørgsel/forberedt erklæring'