sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man tar bort ett databaspostkonto från en profil i SQL Server (T-SQL)

I SQL Server kan du använda sysmail_delete_profileaccount_sp lagrad procedur för att ta bort ett Database Mail-konto från en profil.

Du kan ta bort kontot från en specifik profil eller så kan du ta bort det från alla profiler. Du kan också ta bort alla konton från en viss profil.

Hur det fungerar är att du ger två argument; kontonamnet eller dess ID och profilnamnet eller dess ID. Om du utelämnar argumentet för profilen tas kontot bort från alla profiler. Om du utelämnar argumentet för kontot tas alla konton bort från profilen.

Ta bort ett specifikt konto från en specifik profil

Här är ett exempel som visar hur man tar bort ett konto från en enskild profil.

Låt oss först ringa sysmail_help_profileaccount_sp för att se hur många konto-/profilassociationer jag 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                 |
+--------------+-------------------+--------------+----------------+-------------------+

Jag har två föreningar. Låt oss ta bort den första. Det är här kontot som heter "DB Admin" tillhör profilen som heter "DB Admin Profile").

Så här tar du bort dem baserat på kontonamnet och profilnamnet.

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

Profilen och kontonamnen är sysname med standardvärdet NULL .

ID:n, om du väljer att använda dem istället, är sysname med standardvärdet NULL .

Låt oss nu ringa sysmail_help_profileaccount_sp igen, för att se hur många föreningar 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 väntat har vi nu bara den andra.

Ta bort ett konto från ALLA profiler

Du kan ta bort kontot från alla profiler genom att utelämna profilinformationen. Med andra ord, ange kontonamnet eller ID, men inte profilen.

Så här:

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

Ta bort ALLA konton från en profil

Du kan ta bort alla konton från en profil genom att utelämna kontoinformationen. Med andra ord, ange profilnamnet eller ID, men inte kontot.

Så här:

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

Plats för den lagrade proceduren

sysmail_delete_profileaccount_sp lagrad procedur finns i msdb databas och dess ägare är dbo . Därför måste du ange namn på tre delar om msdb är inte den aktuella databasen.


  1. Hur man visar aktuella anslutningar i MySQL Workbench med hjälp av GUI

  2. Redigera tabellrader / poster i SQL Server Management Studio ( SSMS) - SQL Server självstudie / TSQL självstudie del 18

  3. Lagra en fil i en databas i motsats till filsystemet?

  4. JSON_DEPTH() – Hitta det maximala djupet för ett JSON-dokument i MySQL