Uso di SQL Server Agent - Amazon Relational Database Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Uso di SQL Server Agent

Con Amazon RDS puoi utilizzare SQL Server Agent su un'istanza database che esegue Microsoft SQL Server Enterprise Edition, Standard Edition o Web Edition. SQL Server Agent è un servizio di Microsoft Windows che esegue attività pianificate di amministrazione, dette processi. Puoi utilizzare SQL Server Agent per eseguire processi T-SQL che ricostruiscono indici, eseguono controlli anticorruzione e aggregano i dati in un'istanza database SQL Server.

Quando crei un'istanza database SQL Server, l'utente master è iscritto nel ruolo SQLAgentUserRole.

SQL Server Agent può eseguire un processo pianificato, in risposta a un evento specifico, oppure su richiesta. Per ulteriori informazioni, consulta SQL Server Agent nella documentazione Microsoft.

Nota

Evita di pianificare i processi da eseguire durante le finestre di manutenzione e backup per l'istanza DB. I processi di manutenzione e backup avviati da AWS potrebbero interrompere un processo o causarne l'annullamento.

Nelle distribuzioni Multi-AZ, i processi di SQL Server Agent vengono replicati dall'host principale all'host secondario quando la funzionalità di replica del processo è attivata. Per ulteriori informazioni, consulta Attivazione della replica di processo SQL Server Agent.

Le implementazioni multi-AZ hanno un limite di 10.000 processi di SQL Server Agent. Se hai bisogno di un limite più alto, richiedi un aumento contattando. AWS Support Aprire la pagina del Centro di supporto AWS Support effettuando l'accesso se necessario, quindi selezionare Crea caso. Selezionare Service limit increase (Aumento limiti del servizio). Compilare e inviare il modulo.

Per visualizzare la cronologia di uno specifico processo di SQL Server Agent in SQL Server Management Studio (SSMS), apri Object Explorer, fai clic con il pulsante destro del mouse sul processo e seleziona View History (Visualizza cronologia).

Poiché SQL Server Agent è in esecuzione su un host gestito in un'istanza DB, alcune azioni non sono supportate:

  • L'esecuzione di processi di replica e l'esecuzione di script da riga di comando utilizzando ActiveX, la shell dei comandi di Windows o Windows non sono supportate. PowerShell

  • Non è possibile avviare, arrestare o riavviare manualmente SQL Server Agent.

  • Le notifiche e-mail tramite SQL Server Agent non sono disponibili da un'istanza database.

  • Gli avvisi e gli operatori di SQL Server Agent non sono supportati.

  • L'utilizzo di SQL Server Agent per creare backup non è supportato. Utilizza Amazon RDS per il backup dell'istanza database.

  • Attualmente, RDS per SQL Server non supporta l'uso di token SQL Server Agent.

Attivazione della replica di processo SQL Server Agent

È possibile attivare la replica dei processi SQL Server Agent utilizzando la seguente stored procedure:

EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = 'SQLAgentJob';

È possibile eseguire la stored procedure su tutte le versioni di SQL Server supportate da Amazon RDS for SQL Server. I processi vengono replicati nelle seguenti categorie:

  • [Senza categoria (locale)]

  • [Senza categoria (multi-server)]

  • [Senza categoria]

  • Raccoglitore di dati

  • Tuning Advisor del motore del database

  • Manutenzione database

  • Full text

Vengono replicati solo i processi che utilizzano i passaggi del processo T-SQL. I lavori con tipi di passaggi come SQL Server Integration Services (SSIS), SQL Server Reporting Services (SSRS), Replication e non vengono replicati. PowerShell I processi che utilizzano Database Mail e gli oggetti a livello di server non vengono replicati.

Importante

L'host principale è l'origine della replica. Prima di attivare la replica di processo, assicurarsi che i processi SQL Server Agent siano sul principale. In caso contrario, è possibile che i processi SQL Server Agent vengano eliminati se la funzionalità viene attivata quando i processi più recenti si trovano sull'host secondario.

Utilizza la seguente funzione per verificare se la replica è attivata.

SELECT * from msdb.dbo.rds_fn_get_system_database_sync_objects();

Se i processi di SQL Server Agent sono in fase di replica, la query T-SQL restituisce quanto segue. Se i processi non si stanno replicando, non restituisce nulla per object_class.

I processi SQL Server Agent sono in fase di replica

È possibile utilizzare la seguente funzione per trovare l'ultima volta che gli oggetti sono stati sincronizzati in base al fuso orario UTC.

SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();

Supponi, ad esempio, di modificare un processo SQL Server Agent all'01:00. Prevedi che l'orario di sincronizzazione più recente sia dopo l'01:00, il che suggerisce che la sincronizzazione è avvenuta.

Dopo la sincronizzazione, i valori restituiti per date_created e date_modified sul nodo secondario dovrebbero corrispondere.

L'ultima volta che gli oggetti server sono stati sincronizzati è stato alle 01:21:23

Se si utilizza anche la tempdb replica, è possibile abilitare la replica sia per i job di SQL Agent che per la tempdb configurazione fornendoli nel parametro: @object_type

EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = 'SQLAgentJob,TempDbFile';

Per ulteriori informazioni sulla tempdb replica, vedere. Configurazione TempDB per implementazioni Multi-AZ

Aggiungere un utente al ruolo SQL AgentUser

Per consentire un ulteriore accesso o utilizzo utente di SQL Server Agent, accedi come utente master ed esegui le operazioni seguenti.

  1. Creazione di un altro login a livello di server con il comando CREATE LOGIN.

  2. Creazione di un utente in msdb con il comando CREATE USER e collegamento di questo utente alle credenziali di accesso create nella fase precedente.

  3. Aggiunta dell'utente al SQLAgentUserRole utilizzando la procedura memorizzata di sistema sp_addrolemember.

Supponi, ad esempio, che il tuo nome utente master sia admin e di voler concedere l'accesso a SQL Server Agent a un utente denominato theirname con una password theirpassword. In tal caso, puoi utilizzare la seguente procedura.

Per aggiungere un utente al AgentUser ruolo SQL
  1. Accedi come utente master.

  2. Esegui i comandi seguenti:

    --Initially set context to master database USE [master]; GO --Create a server-level login named theirname with password theirpassword CREATE LOGIN [theirname] WITH PASSWORD = 'theirpassword'; GO --Set context to msdb database USE [msdb]; GO --Create a database user named theirname and link it to server-level login theirname CREATE USER [theirname] FOR LOGIN [theirname]; GO --Added database user theirname in msdb to SQLAgentUserRole in msdb EXEC sp_addrolemember [SQLAgentUserRole], [theirname];

Eliminazione di un processo SQL Server Agent

Puoi utilizzare la procedura archiviata sp_delete_job per eliminare i processi di SQL Server Agent su Amazon RDS for Microsoft SQL Server.

Non è possibile utilizzare SSMS per eliminare i processi di SQL Server Agent. Se provi a farlo, riceverai un messaggio di errore simile al seguente:

The EXECUTE permission was denied on the object 'xp_regread', database 'mssqlsystemresource', schema 'sys'.

Come servizio gestito, a RDS viene impedita l'esecuzione di procedure che accedono al registro di Windows. Quando si utilizza SSMS, tenta di eseguire un processo (xp_regread) per il quale RDS non è autorizzato.

Nota

In RDS per SQL Server, solo i membri del ruolo sysadmin possono aggiornare o eliminare i processi di proprietà di un account di accesso diverso.

Per eliminare un processo di SQL Server Agent
  • Eseguire la seguente istruzione T-SQL:

    EXEC msdb..sp_delete_job @job_name = 'job_name';