Esporta (0) Stampa
Espandi tutto

ALTER FEDERATION (database SQL di Azure)

Aggiornamento: aprile 2014

Questo argomento è OBSOLETO. La versione più recente è disponibile in Guida di riferimento a Transact-SQL 14. Vedere ALTER FEDERATION.

ImportantImportante
L'implementazione corrente delle federazioni verrà ritirata con i livelli di servizio Web e Business. Valutare l'opportunità di distribuire soluzioni di partizionamento orizzontale personalizzato per ottimizzare la scalabilità, la flessibilità e le prestazioni. Per ulteriori informazioni sul partizionamento orizzontale personalizzato, vedere Scalabilità orizzontale di database SQL di Azure.

Modifica la distribuzione dei dati in una federazione.

Convenzioni della sintassi (database SQL di Azure)


ALTER FEDERATION federation_name
{
    SPLIT AT (distribution_name = boundary_value)
    | DROP AT ([LOW|HIGH] distribution_name = boundary_value)
}[;]

federation_name
Nome della federazione che si desidera creare. Il nome essere univoco all'interno del database SQL, conforme alle regole per gli identificatori e di tipo sysname.

distribution_name
Nome della chiave della federazione. Il nome è un identificatore utilizzato per fare riferimento alla chiave della federazione e a esso viene fatto riferimento tramite istruzioni correlate alla federazione come CREATE TABLE … FEDERATED ON(...) o USE FEDERATION. Distribution_name deve essere conforme alle regole per gli identificatori e di tipo sysname.

Boundary_value è il punto di divisione dell'operazione di ridistribuzione. Il valore limite deve essere un valore valido per il tipo di dati specificato dalla chiave della federazione. Nel caso di un'operazione SPLIT, il valore diventa range_low e range_high per i nuovi membri della federazione creati come parte di questa operazione.

SPLIT AT (distribution_name = boundary_value)
Sposta i dati presenti nel membro della federazione che attualmente contiene il valore limite in due nuovi membri della federazione. Tutte le righe delle tabelle federate con le istanze della chiave di federazione < boundary_value vengono copiate in uno dei nuovi membri di federazione di destinazione. Le istanze >= valore limite vengono copiate nell'altro nuovo membro di federazione. Tutti gli altri oggetti, quali tabelle di riferimento, stored procedure, funzioni, utenti e autorizzazioni definite in base a oggetti vengono clonati nei nuovi membri di federazione.

DROP AT ([LOW|HIGH] distribution_name = boundary_value)
Elimina un membro della federazione ed estende l'intervallo di un membro della federazione adiacente per colmare il vuoto creato dall'operazione DROP. Questa operazione interessa sia il membro della federazione eliminato sia il membro della federazione adiacente che verrà esteso per colmare il vuoto. LOW o HIGH determina quale membro di federazione verrà eliminato in corrispondenza del valore limite boundary_value della federazione specificato. Il valore limite deve corrispondere a un valore di partizione esistente (range_high o range_low dei membri di federazione) nella federazione.

Durante l'operazione DROP, non avviene alcun confronto dello schema tra i membri della federazione interessati. DROP non richiede una copia fisica dei dati, reimposta le connessioni e modifica l'elemento db_name() dei membri di federazione interessati.

DROP è un'operazione asincrona.

Proprietà dell'operazione SPLIT

  • L'istruzione ALTER FEDERATION … SPLIT deve essere l'unica istruzione nel batch e non può essere parte di una transazione esterna.

  • L'istruzione ALTER FEDERATION … SPLIT può essere eseguita solo in presenza di una connessione al database radice della federazione.

  • Sui membri della federazione interessati può essere attivo un solo comando DROP o SPLIT alla volta. Più comandi DROP e SPLIT possono essere attivi contemporaneamente purché operino su membri diversi di una federazione.

  • Tutti i membri della federazione di destinazione, ovvero i membri creati in seguito a un'operazione SLIPT, ereditano le proprietà MAXSIZE ed EDITION del membro della federazione di origine.

  • L'operazione SPLIT è un'operazione atomica. Affinché l'operazione SPLIT venga completata correttamente, è necessario che tutti i membri della destinazione vengano creati e sincronizzati nel modo corretto.

  • L'operazione SPLIT è un'operazione asincrona.

    Durante l'esecuzione dell'operazione SPLIT

    • Tutti gli oggetti normali (non federati), gli schemi e i metadati di sistema vengono copiati dal membro della federazione di origine di cui è in corso la suddivisione nel membro della federazione di destinazione. Questo elenco include utenti, ruoli, autorizzazioni per oggetti, stored procedure, viste, tabelle federate o di riferimento, indici e altro ancora. L'unica eccezione è data dalle statistiche di distribuzione contrassegnate per il ricalcolo. Le statistiche contrassegnate con NORECOMPUTE vengono mantenute e non ricalcolate sulle tabelle federate dopo le operazioni di ripartizionamento.

    • Tutti gli schemi delle tabelle federate vengono copiati dal membro della federazione di origine di cui è in corso la suddivisione nel membro della federazione di destinazione.

    • I dati utente nelle tabelle federate vengono spostati nei membri della federazione di destinazione in base al valore limite.

    • I dati utente in tutte le tabelle di riferimento vengono clonati e spostati nel membro della federazione di destinazione.

    Al termine dell'operazione SPLIT

    • Il nuovo membro della federazione contiene tutti i dati aggiornati nei membri della federazione di destinazione corrispondenti.

    • La vista sys.federation_members viene aggiornata per includere i nuovi membri della federazione di destinazione con i relativi valori di intervallo. Il membro della federazione di origine viene eliminato, pertanto non esisterà più in sys.databases o in sys.federation_members.

    • Tutte le connessioni esistenti ai membri della federazione di origine vengono disconnesse. A un nuovo tentativo, le nuove connessioni vengono indirizzate ai nuovi membri della federazione.

Proprietà dell'operazione DROP

  • L'istruzione ALTER FEDERATION … DROP deve essere l'unica istruzione nel batch e non può essere parte di una transazione esterna.

  • L'istruzione ALTER FEDERATION … DROP può essere eseguita solo in presenza di una connessione al database radice della federazione.

  • Il valore limite specificato deve corrispondere a un limite di intervallo esistente (range_high, range_low) nella federazione.

  • L'operazione DROP è un'operazione asincrona.

    All'avvio dell'operazione DROP, l'opzione LOW o HIGH e il valore limite specificato determinano il membro della federazione che verrà eliminato. Un membro della federazione adiacente viene espanso per coprire l'intervallo del membro della federazione eliminato.

    Durante l'esecuzione dell'operazione DROP, non viene eseguito alcun trasferimento dati e non avviene alcun confronto dello schema.

    Al termine dell'operazione DROP

    • Il membro della federazione rimanente viene rinominato.

    • La tabella sys.federation_members non include più il membro della federazione eliminato e dispone dell'intervallo aggiornato per il membro della federazione rimanente.

    • Tutte le connessioni esistenti ai membri della federazione vengono interrotte. Il membro della federazione eliminato non accetta più connessioni. Tutte le connessioni esistenti vengono disconnesse dal membro della federazione rimanente.

Considerazioni sulla sicurezza per le operazioni di federazione

Per creare, modificare ed eliminare federazioni (operazioni CREATE, ALTER e DROP), è necessario essere connessi alla radice della federazione ed essere un membro del ruolo dbmanager nel server. È inoltre necessario essere un membro del gruppo dbo per il database.

Per eseguire le istruzioni SPLIT e DROP, è necessario disporre delle autorizzazioni CREATE e DROP DATABASE per i membri della federazione di origine e per il server a cui si è connessi. In database SQL di Microsoft Azure ciò si limita ai membri del ruolo del server dbmanager. Il proprietario del membro della federazione di origine diventa il proprietario del membro della federazione di destinazione, indipendentemente dall'account utente che esegue l'operazione.

Concorrenza delle operazione SPLIT e DROP

È possibile eseguire simultaneamente più operazioni DROP o SPLIT purché nessuno dei membri della federazione di origine o di destinazione non si sovrapponga.

  • DROP AT (LOW distribution_name = boundary_value)

    Elimina il membro della federazione in corrispondenza del livello LOW del valore limite ed estende il membro della federazione al livello HIGH del valore limite. Esempio: data una federazione (fed1) contenente tre membri che coprono 0,100 (db1), 100,200 (db2) e 200,300 (db3), l'esecuzione del comando ALTER FEDERATION fed1 DROP AT (LOW customer_id=200) comporta le operazioni seguenti:

    1. Operazione DROP su db2 e su tutti i dati tra 100,200

    2. Ridenominazione di db3 in db4. Dbid di Db4 rimane inalterato.

    3. Db4 ora copre l'intervallo di 100,300

  • DROP AT (HIGH distribution_name = boundary_value)

    Elimina il membro della federazione in corrispondenza del livello HIGH del valore limite ed estende il membro della federazione al livello LOW del valore limite. Esempio: data una federazione (fed1) contenente tre membri che coprono 0,100 (db1), 100,200 (db2) e 200,300 (db3), l'emissione del comando ALTER FEDERATION fed1 DROP AT (HIGH customer_id=200) comporta l'esecuzione delle operazioni seguenti:

    1. Operazione DROP su db3 e su tutti i dati tra 200,300

    2. Ridenominazione di db2 in db4. Dbid di Db4 viene mantenuto come db2.

    3. Db4 ora copre l'intervallo di 100,300

Mostra:
© 2014 Microsoft