Condividi tramite


Gestire e risolvere i problemi di Stretch Database

Si applica a: SQL Server 2016 (13.x) e versioni successive - Solo Windows

Importante

Stretch Database è deprecato in SQL Server 2022 (16.x) e database SQL di Azure. Questa funzionalità verrà rimossa nelle versioni future del motore di database. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.

Per gestire e risolvere i problemi di Stretch Database, usare gli strumenti e i metodi descritti in questo articolo.

Gestire i dati locali

Ottenere informazioni su tabelle e database locali abilitati per Stretch Database

Aprire le viste del catalogo sys.databases e sys.tables per visualizzare informazioni sulle tabelle e i database di SQL Server abilitati per l’estensione. Per altre informazioni, vedere sys.databases (Transact-SQL) e sys.tables (Transact-SQL).

Per visualizzare la quantità di spazio usata da una tabella abilitata per l'estensione in SQL Server, eseguire questa istruzione.

USE <Stretch-enabled database name>;
GO
EXEC sp_spaceused '<Stretch-enabled table name>', 'true', 'LOCAL_ONLY';
GO

Gestire la migrazione dei dati

Controllare la funzione di filtro applicata a una tabella

Aprire la vista del catalogo sys.remote_data_archive_tables e controllare il valore della colonna filter_predicate per identificare la funzione che Stretch Database sta usando per selezionare le righe da migrare. Se il valore è null, l'intera tabella è idonea alla migrazione. Per altre informazioni, vedere sys.remote_data_archive_tables (Transact-SQL) e Selezionare le righe di cui eseguire la migrazione tramite una funzione di filtro.

Controllare lo stato della migrazione dei dati

Selezionare Attività > Stretch > Monitoraggio per un database in SQL Server Management Studio per monitorare la migrazione dei dati in Monitoraggio di Stretch Database. Per altre informazioni, vedere l'articolo relativo a monitoraggio e risoluzione dei problemi di migrazione dei dati (Stretch Database).

In alternativa, aprire la vista a gestione dinamica sys.dm_db_rda_migration_status per visualizzare il numero di batch e righe di dati migrati.

Risoluzione dei problemi di migrazione dei dati

Per avere suggerimenti sulla risoluzione dei problemi, vedere l'articolo relativo a monitoraggio e risoluzione dei problemi di migrazione dei dati (Stretch Database).

Gestire i dati remoti

Informazioni su database e tabelle remoti usati da Estensione database

Aprire le viste del catalogo sys.remote_data_archive_databases e sys.remote_data_archive_tables per visualizzare informazioni sulle tabelle e i database remoti in cui sono memorizzati i dati migrati. Per altre informazioni, vedere sys.remote_data_archive_databases (Transact-SQL) e sys.remote_data_archive_tables (Transact-SQL).

Per visualizzare la quantità di spazio usata da una tabella abilitata per l'estensione in Azure, eseguire questa istruzione.

USE <Stretch-enabled database name>;
GO
EXEC sp_spaceused '<Stretch-enabled table name>', 'true', 'REMOTE_ONLY';
GO

Eliminare i dati migrati

Per eliminare i dati di cui è già stata eseguita la migrazione in Azure, seguire i passaggi descritti in sys.sp_rda_reconcile_batch.

Gestire lo schema di una tabella

Non modificare lo schema di una tabella remota

Non modificare lo schema di una tabella di Azure remota associata a una tabella di SQL Server configurata per Stretch Database. In particolare, non modificare il nome o il tipo di dati di una colonna. La funzionalità Stretch Database ipotizza varie opzioni per lo schema della tabella remota in relazione allo schema della tabella di SQL Server. Se si modifica lo schema remoto, Stretch Database smette di funzionare per la tabella modificata.

Riconciliare le colonne della tabella

Se sono state accidentalmente eliminate colonne dalla tabella remota, eseguire sp_rda_reconcile_columns per aggiungere colonne alla tabella remota presenti nella tabella di SQL Server abilitata per l'estensione, ma non nella tabella remota. Per altre informazioni, vedere sys.sp_rda_reconcile_columns.

Importante

Quando sp_rda_reconcile_columns crea nuovamente le colonne accidentalmente eliminate dalla tabella remota, non ripristina i dati che erano presenti nelle colonne eliminate.

sp_rda_reconcile_columns non elimina le colonne della tabella remota presenti nella tabella remota, ma non nella tabella di SQL Server con estensione abilitata. Se sono presenti colonne nella tabella di Azure remota che non esistono più nella tabella SQL Server con estensione abilitata, queste colonne aggiuntive non impediscono a Stretch Database di funzionare normalmente. È possibile rimuovere le colonne aggiuntive manualmente.

Gestire prestazioni e costi

Risolvere i problemi di prestazioni delle query

L'esecuzione di query che includono tabelle abilitate per Estensione database in genere è più lenta rispetto a quanto avveniva prima dell'abilitazione delle tabelle per Estensione database. Se le prestazioni delle query diminuiscono significativamente, esaminare i possibili problemi tra quelli riportati di seguito.

  • Il server di Azure si trova in un'area geografica diversa rispetto all'istanza di SQL Server? Configurare il server di Azure in modo che si trovi nella stessa area geografica dell'istanza di SQL Server per ridurre la latenza di rete.

  • Le condizioni della rete possono essere peggiorate. Per informazioni su problemi o interruzioni recenti, contattare l'amministratore di rete.

Aumentare il livello di prestazioni di Azure per le operazioni a elevato utilizzo di risorse, quali l'indicizzazione

Quando si compila, ricompila o riorganizza un indice su una tabella di grandi dimensioni configurata per Stretch Database e si prevedono pesanti operazioni di query dei dati migrati in Azure durante questo intervallo, provare ad aumentare il livello di prestazioni del database di Azure remoto corrispondente durante l’operazione. Per altre informazioni sui livelli di prestazioni e i prezzi, vedere l'articolo sui prezzi relativi a SQL Server Stretch Database.

Non è possibile sospendere il servizio SQL Server Stretch Database in Azure

Assicurarsi di selezionare il livello di prestazioni e il piano tariffario corretti. Se si aumenta il livello di prestazioni temporaneamente per un'operazione che usa un numero elevato di risorse, ripristinare il livello precedente al termine dell'operazione. Per altre informazioni sui livelli di prestazioni e i prezzi, vedere l'articolo sui prezzi relativi a SQL Server Stretch Database.

Modificare l'ambito delle query

Le query sulle tabelle abilitate per l'estensione restituiscono dati locali e remoti per impostazione predefinita. È possibile modificare l'ambito delle query per tutte le query di tutti gli utenti oppure per una singola query di un amministratore.

Modificare l'ambito delle query per tutte le query di tutti gli utenti

Per modificare l'ambito di tutte le query di tutti gli utenti, eseguire la stored procedure sys.sp_rda_set_query_mode. È possibile ridurre l'ambito per eseguire query solo sui dati locali, disabilitare tutte le query o ripristinare l'impostazione predefinita. Per altre informazioni, vedere sys.sp_rda_set_query_mode.

Modificare l'ambito delle query per una singola query di un amministratore

Per modificare l'ambito di una singola query di un membro del ruolo db_owner, aggiungere l'hint per la query WITH ( REMOTE_DATA_ARCHIVE_OVERRIDE = *value* ) all'istruzione SELECT. L'hint per la query REMOTE_DATA_ARCHIVE_OVERRIDE può avere i valori seguenti.

  • LOCAL_ONLY. Eseguire query solo sui dati locali.

  • REMOTE_ONLY. Eseguire query solo sui dati remoti.

  • STAGE_ONLY. Query sui soli dati della tabella in cui Stretch Database inserisce temporaneamente le righe idonee alla migrazione e conserva le righe migrate per il periodo specificato dopo la migrazione. Questo hint per la query è l'unico modo per eseguire query sulla tabella di staging.

Ad esempio, la query seguente restituisce solo risultati locali.

USE [<Stretch-enabled database name>];
GO
SELECT *
FROM [<Stretch_enabled table name>]
WITH (REMOTE_DATA_ARCHIVE_OVERRIDE = LOCAL_ONLY)
WHERE someCol = 1 /* sample predicate only, please replace with an appropriate one */;
GO

Eseguire aggiornamenti ed eliminazioni amministrativi

Per impostazione predefinita non è possibile eseguire operazioni UPDATE o DELETE sulle righe idonee per la migrazione o già migrate in una tabella abilitata per l'estensione. Se è necessario risolvere un problema, un membro del ruolo db_owner può eseguire un'operazione UPDATE o DELETE aggiungendo l'hint per la query WITH ( REMOTE_DATA_ARCHIVE_OVERRIDE = *value* ) all'istruzione. L'hint per la query REMOTE_DATA_ARCHIVE_OVERRIDE può avere i valori seguenti.

  • LOCAL_ONLY. Aggiornare o eliminare solo i dati locali.

  • REMOTE_ONLY. Aggiornare o eliminare solo i dati remoti.

  • STAGE_ONLY. Aggiornamento o eliminazione dei soli dati della tabella in cui Stretch Database inserisce temporaneamente le righe idonee alla migrazione e conserva le righe migrate per il periodo specificato dopo la migrazione.

Vedi anche