sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man ändrar sekvensnumret för ett databaspostkonto inom en profil i SQL Server (T-SQL)

Om du redan har lagt till ett Database Mail-konto till en profil, men du nu vill ändra sekvensnumret, kan du göra det med sysmail_update_profileaccount_sp lagrad procedur.

När du gör detta måste du ange namn eller ID för både kontot och profilen. Detta eftersom du behöver ange exakt vilken profil/kontoförening du vill uppdatera.

Exempel

Här är ett exempel att visa:

EXECUTE msdb.dbo.sysmail_update_profileaccount_sp  
    @profile_name = 'DB Admin Profile',
    @account_name = 'DB Admin',
    @sequence_number = 2;

Det här exemplet ändrar sekvensnumret för kontot som heter "DB Admin" inom profilen som heter "DB Admin Profile".

I det här fallet har jag ändrat sekvensnumret till 2, vilket betyder att "DB Admin"-kontot endast kommer att användas om det första kontot misslyckas.

Använda profil-/konto-ID:n

I det här exemplet använder jag profil- och konto-ID:n istället för deras namn:

EXECUTE msdb.dbo.sysmail_update_profileaccount_sp  
    @profile_id = 1,
    @account_id = 1,
    @sequence_number = 3;

Använda en kombination av ID och namn

Du kan alternativt ange ID för den ena och namnet på den andra.

Till exempel:

EXECUTE msdb.dbo.sysmail_update_profileaccount_sp 
    @profile_name = 'DB Admin Profile',
    @account_id = 1,
    @sequence_number = 4;

Eller tvärtom:

EXECUTE msdb.dbo.sysmail_update_profileaccount_sp
    @profile_id = 1,
    @account_name = 'DB Admin',
    @sequence_number = 1;

Hur fungerar sekvensnumret?

Du kan lägga till flera konton till en Databas Mail-profil. Sekvensnumret bestämmer i vilken ordning dessa konton används i profilen när du skickar e-post. Databas Mail börjar med det konto som har det lägsta sekvensnumret. Om det kontot misslyckas används kontot med det näst högsta sekvensnumret, och så vidare.

Om det finns mer än ett konto med samma sekvensnummer kommer Database Mail endast att använda ett av dessa konton för ett givet e-postmeddelande.

Det finns dock ingen garanti för att samma konto kommer att användas för efterföljande meddelanden. Till exempel, om två konton delar ett sekvensnummer på 1, kan du få några e-postmeddelanden från ett konto och några från det andra kontot.

Jag bör påpeka att, enligt den här Microsoft-artikeln, när du skickar ett nytt e-postmeddelande, börjar Database Mail faktiskt med det senaste kontot som skickade ett meddelande framgångsrikt , eller det konto som har det lägsta sekvensnumret om inget meddelande ännu har skickats.

Det faktum att det börjar med det senaste kontot som skickade ett meddelande framgångsrikt nämns inte i den officiella dokumentationen för sysmail_add_profileaccount_sp eller sysmail_update_profileaccount_sp .

Hur som helst, det är något att vara uppmärksam på, och det kan rädda dig från att slita håret om din DB Mail verkar ignorera dina sekvensnummer.

Plats för den lagrade proceduren

Observera att sysmail_update_profileaccount_sp lagrad procedur finns i msdb databasen, och den ägs av dbo schema. Därför måste du använda tre delars namngivning om du kör det utanför msdb databas.

Hur man returnerar konto- och profilinformation

Följande artiklar ger instruktioner för att returnera konto- och profilinformation.

  • Få en lista över databaspostkonton i SQL Server
  • Returnera en lista över e-postprofiler i databasen i SQL Server


  1. SQLite PRIMARY key AutoIncrement fungerar inte

  2. Mysql Förbättra sökprestanda med jokertecken (%%)

  3. Anropar en annan PL/SQL-procedur inom en procedur

  4. Android SQLite infoga eller uppdatera