Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment supprimer un compte de messagerie de base de données d'un profil dans SQL Server (T-SQL)

Dans SQL Server, vous pouvez utiliser le sysmail_delete_profileaccount_sp procédure stockée pour supprimer un compte Database Mail d'un profil.

Vous pouvez supprimer le compte d'un profil spécifique ou vous pouvez le supprimer de tous profils. Vous pouvez également supprimer tous les comptes d'un profil donné.

La façon dont cela fonctionne est que vous fournissez deux arguments; le nom du compte ou son ID, et le nom du profil ou son ID. Si vous omettez l'argument pour le profil, le compte est supprimé de tous les profils. Si vous omettez l'argument pour le compte, tous les comptes sont supprimés du profil.

Supprimer un compte spécifique d'un profil spécifique

Voici un exemple pour montrer comment supprimer un compte d'un seul profil.

Appelons d'abord sysmail_help_profileaccount_sp pour voir combien d'associations compte/profil j'ai.

EXEC msdb.dbo.sysmail_help_profileaccount_sp;

Résultat :

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

J'ai deux associations. Supprimons le premier. C'est là que le compte appelé "DB Admin" appartient au profil appelé "DB Admin Profile").

Voici comment les supprimer en fonction du nom du compte et du nom du profil.

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

Les noms de profil et de compte sont sysname avec une valeur par défaut de NULL .

Les identifiants, si vous choisissez de les utiliser à la place, sont sysname avec une valeur par défaut de NULL .

Appelons maintenant sysmail_help_profileaccount_sp encore une fois, pour voir combien d'associations nous avons maintenant.

EXEC msdb.dbo.sysmail_help_profileaccount_sp;

Résultat :

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

Comme prévu, nous n'avons plus que le deuxième.

Supprimer un compte de TOUS les profils

Vous pouvez supprimer le compte de tous les profils en omettant les détails du profil. En d'autres termes, indiquez le nom ou l'ID du compte, mais pas le profil.

Comme ceci :

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

Supprimer TOUS les comptes d'un profil

Vous pouvez supprimer tous les comptes d'un profil en omettant les détails du compte. En d'autres termes, indiquez le nom ou l'ID du profil, mais pas le compte.

Comme ceci :

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

Emplacement de la procédure stockée

Le sysmail_delete_profileaccount_sp la procédure stockée est située dans le msdb base de données et son propriétaire est dbo . Par conséquent, vous devrez fournir un nom en trois parties si msdb n'est pas la base de données actuelle.