sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo eliminar una cuenta de correo de base de datos de un perfil en SQL Server (T-SQL)

En SQL Server, puede usar sysmail_delete_profileaccount_sp procedimiento almacenado para eliminar una cuenta de Correo electrónico de base de datos de un perfil.

Puede eliminar la cuenta de un perfil específico o puede eliminarla de todos perfiles. También puede eliminar todas las cuentas de un perfil determinado.

La forma en que funciona es que proporciona dos argumentos; el nombre de la cuenta o su ID, y el nombre del perfil o su ID. Si omite el argumento del perfil, la cuenta se elimina de todos los perfiles. Si omite el argumento de la cuenta, todas las cuentas se eliminan del perfil.

Eliminar una cuenta específica de un perfil específico

Aquí hay un ejemplo para demostrar cómo eliminar una cuenta de un solo perfil.

Primero, llamemos a sysmail_help_profileaccount_sp para ver cuántas asociaciones de cuenta/perfil tengo.

EXEC msdb.dbo.sysmail_help_profileaccount_sp;

Resultado:

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

Tengo dos asociaciones. Quitemos el primero. Aquí es donde la cuenta llamada "DB Admin" pertenece al perfil llamado "DB Admin Profile").

Aquí se explica cómo eliminarlos según el nombre de la cuenta y el nombre del perfil.

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

Los nombres de perfil y cuenta son sysname con un valor predeterminado de NULL .

Los ID, si decide utilizarlos en su lugar, son sysname con un valor predeterminado de NULL .

Ahora llamemos a sysmail_help_profileaccount_sp de nuevo, para ver cuántas asociaciones tenemos ahora.

EXEC msdb.dbo.sysmail_help_profileaccount_sp;

Resultado:

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

Como era de esperar, ahora solo tenemos el segundo.

Eliminar una cuenta de TODOS los perfiles

Puede eliminar la cuenta de todos los perfiles omitiendo los detalles del perfil. En otras palabras, proporcione el nombre o ID de la cuenta, pero no el perfil.

Así:

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

Eliminar TODAS las cuentas de un perfil

Puede eliminar todas las cuentas de un perfil omitiendo los detalles de la cuenta. En otras palabras, proporcione el nombre o ID del perfil, pero no la cuenta.

Así:

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

Ubicación del procedimiento almacenado

El sysmail_delete_profileaccount_sp el procedimiento almacenado se encuentra en msdb base de datos y su dueño es dbo . Por lo tanto, deberá proporcionar un nombre de tres partes si msdb no es la base de datos actual.