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
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
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
.
È 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.
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.
-
Creazione di un altro login a livello di server con il comando
CREATE LOGIN
. -
Creazione di un utente in
msdb
con il comandoCREATE USER
e collegamento di questo utente alle credenziali di accesso create nella fase precedente. -
Aggiunta dell'utente al
SQLAgentUserRole
utilizzando la procedura memorizzata di sistemasp_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
-
Accedi come utente master.
-
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
';