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

Come rimuovere un account di posta del database da un profilo in SQL Server (T-SQL)

In SQL Server puoi utilizzare sysmail_delete_profileaccount_sp stored procedure per rimuovere un account Posta database da un profilo.

Puoi rimuovere l'account da un profilo specifico o rimuoverlo da tutti profili. Puoi anche rimuovere tutti gli account da un determinato profilo.

Il modo in cui funziona è che fornisci due argomenti; il nome dell'account o il suo ID e il nome del profilo o il suo ID. Se ometti l'argomento per il profilo, l'account viene rimosso da tutti i profili. Se ometti l'argomento per l'account, tutti gli account vengono rimossi dal profilo.

Rimuovere un account specifico da un profilo specifico

Ecco un esempio per dimostrare come rimuovere un account da un singolo profilo.

Per prima cosa, chiamiamo sysmail_help_profileaccount_sp per vedere quante associazioni di account/profilo ho.

EXEC msdb.dbo.sysmail_help_profileaccount_sp;

Risultato:

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

Ho due associazioni. Rimuoviamo il primo. È qui che l'account chiamato "DB Admin" appartiene al profilo chiamato "DB Admin Profile").

Ecco come rimuoverli in base al nome dell'account e al nome del profilo.

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

Il profilo e i nomi degli account sono sysname con un valore predefinito di NULL .

Gli ID, se invece scegli di usarli, sono sysname con un valore predefinito di NULL .

Ora chiamiamo sysmail_help_profileaccount_sp di nuovo, per vedere quante associazioni abbiamo ora.

EXEC msdb.dbo.sysmail_help_profileaccount_sp;

Risultato:

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

Come previsto, ora abbiamo solo il secondo.

Rimuovi un account da TUTTI i profili

Puoi rimuovere l'account da tutti i profili omettendo i dettagli del profilo. In altre parole, fornisci il nome dell'account o l'ID, ma non il profilo.

In questo modo:

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

Rimuovi TUTTI gli account da un profilo

Puoi rimuovere tutti gli account da un profilo omettendo i dettagli dell'account. In altre parole, fornisci il nome del profilo o l'ID, ma non l'account.

In questo modo:

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

Posizione della stored procedure

Il sysmail_delete_profileaccount_sp stored procedure si trova in msdb database e il suo proprietario è dbo . Pertanto, dovrai fornire una denominazione in tre parti se msdb non è il database corrente.