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

Sådan fjerner du en database-mailkonto fra en profil i SQL Server (T-SQL)

I SQL Server kan du bruge sysmail_delete_profileaccount_sp gemt procedure for at fjerne en Database Mail-konto fra en profil.

Du kan fjerne kontoen fra en bestemt profil, eller du kan fjerne den fra alle profiler. Du kan også fjerne alle konti fra en given profil.

Måden det fungerer på er, at du giver to argumenter; kontonavnet eller dets ID og profilnavnet eller dets ID. Hvis du udelader argumentet for profilen, fjernes kontoen fra alle profiler. Hvis du udelader argumentet for kontoen, fjernes alle konti fra profilen.

Fjern en specifik konto fra en specifik profil

Her er et eksempel til at demonstrere, hvordan man fjerner en konto fra en enkelt profil.

Lad os først ringe til sysmail_help_profileaccount_sp for at se, hvor mange konto-/profiltilknytninger jeg har.

EXEC msdb.dbo.sysmail_help_profileaccount_sp;

Resultat:

+--------------+-------------------+--------------+----------------+-------------------+
| profile_id   | profile_name      | account_id   | account_name   | sequence_number   |
|--------------+-------------------+--------------+----------------+-------------------|
| 3            | DB Admin Profile  | 3            | DB Admin       | 1                 |
| 2            | DB Public Profile | 2            | DB Public      | 1                 |
+--------------+-------------------+--------------+----------------+-------------------+

Jeg har to foreninger. Lad os fjerne den første. Det er her kontoen kaldet "DB Admin" hører til profilen kaldet "DB Admin Profile").

Sådan fjerner du dem baseret på kontonavnet og profilnavnet.

EXEC msdb.dbo.sysmail_delete_profileaccount_sp
    @profile_name = 'DB Admin Profile',  
    @account_name = 'DB Admin';

Profil- og kontonavnene er sysname med en standard på NULL .

ID'erne, hvis du vælger at bruge dem i stedet, er sysname med en standard på NULL .

Lad os nu ringe til sysmail_help_profileaccount_sp igen for at se, hvor mange foreninger vi nu har.

EXEC msdb.dbo.sysmail_help_profileaccount_sp;

Resultat:

+--------------+-------------------+--------------+----------------+-------------------+
| profile_id   | profile_name      | account_id   | account_name   | sequence_number   |
|--------------+-------------------+--------------+----------------+-------------------|
| 2            | DB Public Profile | 2            | DB Public      | 1                 |
+--------------+-------------------+--------------+----------------+-------------------+

Som forventet har vi nu kun den anden.

Fjern en konto fra ALLE profiler

Du kan fjerne kontoen fra alle profiler ved at udelade profiloplysningerne. Med andre ord, angiv kontonavnet eller ID, men ikke profilen.

Sådan:

EXEC msdb.dbo.sysmail_delete_profileaccount_sp 
    @account_name = 'DB Admin';

Fjern ALLE konti fra en profil

Du kan fjerne alle konti fra en profil ved at udelade kontooplysningerne. Med andre ord, angiv profilnavnet eller id'et, men ikke kontoen.

Sådan:

EXEC msdb.dbo.sysmail_delete_profileaccount_sp 
    @profile_name = 'DB Admin Profile';

Placering af den lagrede procedure

sysmail_delete_profileaccount_sp gemt procedure er placeret i msdb databasen og dens ejer er dbo . Derfor skal du angive tre dele navngivning, hvis msdb er ikke den aktuelle database.


  1. Sådan får du månedens navn fra en dato i Oracle

  2. Får [archiver] ikke-understøttet version (1.13) i filhovedet, når du kører pg_restore

  3. psycopg2 hvordan håndtere TypeError:ikke alle argumenter konverteres under strengformatering

  4. Hvordan beregner man retentionsrate i SQL?