Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como remover uma conta do Database Mail de um perfil no SQL Server (T-SQL)


No SQL Server, você pode usar o sysmail_delete_profileaccount_sp procedimento armazenado para remover uma conta do Database Mail de um perfil.

Você pode remover a conta de um perfil específico ou removê-la de todos perfis. Você também pode remover todas as contas de um determinado perfil.

A maneira como funciona é que você fornece dois argumentos; o nome da conta ou seu ID e o nome do perfil ou seu ID. Se você omitir o argumento do perfil, a conta será removida de todos os perfis. Se você omitir o argumento da conta, todas as contas serão removidas do perfil.

Remover uma conta específica de um perfil específico


Aqui está um exemplo para demonstrar como remover uma conta de um único perfil.

Primeiro, vamos chamar sysmail_help_profileaccount_sp para ver quantas associações de conta/perfil eu tenho.
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                 |
+--------------+-------------------+--------------+----------------+-------------------+

Eu tenho duas associações. Vamos remover o primeiro. É aqui que a conta chamada “DB Admin” pertence ao perfil chamado “DB Admin Profile”).

Veja como removê-los com base no nome da conta e no nome do perfil.
EXEC msdb.dbo.sysmail_delete_profileaccount_sp
    @profile_name = 'DB Admin Profile',  
    @account_name = 'DB Admin';

Os nomes do perfil e da conta são sysname com um padrão de NULL .

Os IDs, se você optar por usá-los, são sysname com um padrão de NULL .

Agora vamos chamar sysmail_help_profileaccount_sp novamente, para ver quantas associações temos agora.
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 esperado, agora temos apenas o segundo.

Remover uma conta de TODOS os perfis


Você pode remover a conta de todos os perfis omitindo os detalhes do perfil. Em outras palavras, forneça o nome ou ID da conta, mas não o perfil.

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

Remover TODAS as contas de um perfil


Você pode remover todas as contas de um perfil omitindo os detalhes da conta. Em outras palavras, forneça o nome ou ID do perfil, mas não a conta.

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

Localização do procedimento armazenado


O sysmail_delete_profileaccount_sp procedimento armazenado está localizado no msdb banco de dados e seu proprietário é dbo . Portanto, você precisará fornecer três nomes de partes se msdb não é o banco de dados atual.