ALTER FEDERATION (base de données SQL Azure)

Permet de modifier la distribution des données au sein d'une fédération dans Base de données SQL Azure.

Important

L'implémentation actuelle des fédérations sera retirée avec les couches de service Web et Business. Envisagez de déployer des solutions de partitionnement personnalisées pour maximiser l'extensibilité, la flexibilité et les performances.Pour plus d'informations sur le partitionnement personnalisé, consultez Montée en charge des bases de données Azure SQL.

Syntax Conventions (SQL Database)

S'applique à : Base de données SQL Azure.

Syntaxe

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

Arguments

  • federation_name
    Nom de la fédération à modifier. Le nom doit être unique au sein de la Base de données SQL et être conforme aux règles applicables aux identificateurs. Il est de type sysname.

  • distribution_name
    Nom de la clé de fédération. Le nom est un identificateur qui fait référence à la clé de fédération. Il est utilisé avec des instructions liées aux fédérations (CREATE TABLE … FEDERATED ON(...) ou USE FEDERATION). Distribution_name doit être conforme aux règles applicables aux identificateurs et de type sysname.

    Boundary_value est le point de division pour l'opération de repartitionnement. La valeur limite doit être une valeur valide pour le type de données spécifié par la clé de fédération de la fédération. Dans le cas d'une opération SPLIT, range_low et range_high deviennent la valeur des nouveaux membres de fédération créés dans le cadre de cette opération.

  • SPLIT AT (distribution_name = boundary_value)
    Déplace les données du membre de fédération qui contient actuellement la valeur limite dans deux nouveaux membres de la fédération. Toutes les lignes des tables fédérées contenant des instances de clé de fédération inférieures à boundary_value sont copiées dans l'un des nouveaux membres de fédération de destination. Les instances supérieures ou égales à boundary_value sont copiées dans l'autre nouveau membre de fédération. Tous les autres objets tels que les tables de référence, les procédures stockées, les fonctions, les utilisateurs et les autorisations définies sur les objets sont clonés aux nouveaux membres de la fédération.

  • DROP AT ([LOW | HIGH] distribution_name = boundary_value)
    Supprime un membre de fédération et étend la plage d'un membre de fédération adjacent pour combler le vide créé par l'opération DROP. Cette opération a un impact à la fois sur le membre de fédération supprimé et sur le membre de fédération adjacent qui sera étendu pour combler le vide. LOW ou HIGH détermine le membre de fédération qui sera supprimé à la boundary_value de la fédération spécifiée. La valeur limite doit correspondre à une valeur de partition existante (range-high ou range-low des membres de la fédération) dans la fédération.

    Lors de l'opération DROP, aucune comparaison de schémas n'est effectuée entre les membres de fédération concernés. DROP AT ne nécessite pas de copie physique de données. Les données contenues dans le membre seront supprimées. DROP AT réinitialise également les connexions et modifie le DB_NAME() sur les membres de fédération concernés.

    DROP AT est une opération asynchrone.

  • SWITCH OUT AT ([LOW | HIGH] distribution_name = boundary_value)
    Supprime toutes les métadonnées de fédération et les contraintes de la base de données de membres de fédération. Après l'exécution, le membre de fédération est une base de données autonome. Pendant un SWITCH OUT, aucune donnée n'est supprimée ou déplacée. LOW ou HIGH détermine le membre de fédération qui sera extrait du côté du boundary_value de la fédération donnée. La valeur limite doit correspondre à une valeur de partition existante, range-high ou range-low dans la fédération existante. À la différence de DROP AT, SWITCH OUT n'étend pas une plage de membres de fédération adjacente pour combler le vide créé par l'opération. Si vous voulez migrer votre application de fédération vers une Base de données SQL Azure élastique, créez tout d'abord un mappage de partage avant d'exécuter cette commande.

    Avertissement

    La commande SWITCH OUT est permanente.Une fois exécutée, le membre ne sera pas accessible à l'aide de l'instruction USING FEDERATION et la base de données ne peut plus être ajoutée à la fédération d'origine.L'exécution de cette commande n'a pas d'impact sur les autres membres de fédération.

Notes

L'exécution simultanée de plusieurs opérations DROP ou SPLIT est autorisée à condition qu'aucun des membres de fédération source ou de destination ne se chevauchent.

Propriétés de l'opération SPLIT

  • L'instruction ALTER FEDERATION ... SPLIT doit être la seule instruction du traitement et ne peut pas faire partie d'une transaction externe.

  • L'instruction ALTER FEDERATION … SPLIT peut être exécutée uniquement si une connexion est établie à la base de données racine de fédération.

  • Seule une commande DROP ou SPLIT peut être active à la fois sur les membres de fédération concernés. Il peut y avoir de nombreuses commandes DROP et SPLIT actives en même temps dans la mesure où ils fonctionnent sur ​​les différents membres d'une fédération.

  • Tous les membres de fédération de destination (les membres de la fédération créée en raison d'une opération SLIPT) héritent des propriétés MAXSIZE et EDITION du membre de fédération source.

  • L'opération SPLIT est une opération atomique. Tous les membres de destination doivent être correctement créés et synchronisés pour que l'opération SPLIT aboutisse.

  • L'opération SPLIT est une opération asynchrone.

    Pendant l'exécution de SPLIT

    • Tous les objets, schémas et métadonnées système normaux (non fédérés) sont copiés du membre de fédération source faisant l'objet du fractionnement (SPLIT) vers le membre de fédération de destination. Cette liste comprend notamment les utilisateurs, les rôles, les autorisations d'objet, les procédures stockées, les vues, les tables fédérées ou de référence et les index. Les statistiques de distribution marquées pour recalcul sont l'unique exception. Les statistiques marquées avec NORECOMPUTE sont conservées et ne sont pas recalculées dans les tables fédérées après des opérations de repartitionnement.

    • Tous les schémas de table fédérée sont copiés du membre de fédération source faisant l'objet du fractionnement (SPLIT) vers le membre de fédération de destination.

    • Les données utilisateur contenues dans les tables fédérées sont déplacées vers les membres de fédération de destination en fonction de la valeur limite.

    • Les données utilisateur contenues dans toutes les tables de référence sont clonées puis déplacées vers le membre de fédération de destination.

    À la fin de SPLIT ;

    • Le nouveau membre de fédération contient toutes les données à jour des membres de fédération de destination correspondants.

    • La vue sys.federation_members est mise à jour pour inclure les nouveaux membres de fédération de destination avec leurs valeurs de plage. Le membre de fédération source est supprimé et n'existe plus dans sys.databases ni sys.federation_members.

    • Toutes les connexions existantes aux membres de fédération sources sont déconnectées. Lors d'une nouvelle tentative, les nouvelles connexions sont acheminées vers les nouveaux membres de fédération.

Propriétés de l'opération DROP

  • L'instruction ALTER FEDERATION ... DROP doit être la seule instruction du traitement et ne peut pas faire partie d'une transaction externe.

  • L'instruction ALTER FEDERATION … DROP peut être exécutée uniquement si une connexion est établie à la base de données racine de fédération.

  • La valeur limite doit correspondre à une limite de plage existante (range_high, range_low) dans la fédération.

  • L'opération DROP est une opération asynchrone.

    Lorsque l'opération DROP commence, l'option LOW ou HIGH et la valeur limite spécifiée déterminent le membre de fédération qui sera abandonné. Un membre de fédération adjacent s'est élargi pour couvrir la plage du membre de fédération supprimé.

    Pendant l'exécution de DROP, aucun transfert de données n'est effectué et aucune comparaison de schémas ne se produit.

    Lorsque l'opération DROP est terminée

    • Le membre de fédération restant est renommé.

    • La table sys.federation_members n'inclut plus le membre de fédération abandonné et porte la plage mise à jour du membre de fédération restant.

    • Toutes les connexions existantes aux membres de fédération sont déconnectées. Le membre de fédération supprimé n'accepte plus les connexions. Le membre de fédération restant déconnecte toutes les connexions existantes.

Propriétés de l'opération SWITCH OUT

  • L'opération SWITCH OUT doit être la seule instruction du traitement, et ne peut pas faire partie d'une transaction externe.

  • L'opération SWITCH OUT ne peut être exécutée que lorsque vous êtes connecté à la base de données racine de fédération.

  • L'opération SWITCH OUT est une opération asynchrone.

  • Les nouvelles connexions au membre de fédération seront bloquées tant que l'opération n'est pas terminée.

  • Quand SWITCH OUT est terminée :

    • La table sys.databases dans master sera mise à jour pour indiquer que la base de données n'est plus un membre de fédération.

    • Toutes les connexions existantes aux membres de fédération sont déconnectées. Le membre de fédération SWITCH OUT n'acceptera plus les connexions à l'aide de la commande USING FEDERATION.

    • Toutes les contraintes spécifiques à la fédération sur la base de données cible et les tables fédérées seront supprimées.

  • UNE FOIS la commande SWITCH OUT émise sur tous les membres de fédération, la fédération et la base de données racine de fédération peuvent être supprimées.

Autorisations

Pour pouvoir créer, modifier et supprimer des fédérations, vous devez être connecté à la racine de fédération et être membre du rôle dbmanager sur le serveur. Vous devez également être membre du groupe dbo de la base de données.

Les instructions SPLIT et DROP nécessitent que vous disposiez d'autorisations CREATE et DROP DATABASE sur les membres de fédération sources et sur le serveur auquel vous êtes connecté. Dans Base de données SQL Azure, cela se limite aux membres du rôle de serveur dbmanager. Le propriétaire du membre de fédération source devient propriétaire du membre de fédération de destination, quel que soit le compte d'utilisateur qui exécute l'opération.

Exemples

L'exemple suivant utilise l'opération SWITCH OUT pour extraire un membre de fédération qui contient la clé de fédération 99, qui est contenue au niveau inférieur de la valeur limite de 100.

ALTER FEDERATION CustomerFederation SWITCH OUT AT (LOW cid = 100)

L'exemple suivant utilise l'opération SWITCH OUT sur un membre de fédération unique pour l'extraction du côté supérieur de la valeur limite de uniqueidentifier 00000000-0000-0000-0000-000000000000.

ALTER FEDERATION CustomerFederation SWITCH OUT AT (HIGH cid = '00000000-0000-0000-0000-000000000000')
  • DROP AT (LOW distribution_name = boundary_value)

    Supprime le membre de fédération au niveau inférieur (LOW) de la valeur limite et étend le membre de fédération au niveau supérieur (HIGH) de la valeur limite. Prenons pour exemple une fédération (fed1) contenant trois membres de fédération couvrant les plages 0,100 (db1), 100,200 (db2) et 200,300 (db3). L'exécution de ALTER FEDERATION fed1 DROP AT (LOW customer_id=200) produit les effets suivants :

    1. db2 et toutes les données comprise dans la plage 100-200 sont supprimés.

    2. db3 est renommé db4. L'identificateur Dbid de db4 reste inchangé.

    3. db4 couvre à présent la plage 100-300.

  • DROP AT (HIGH distribution_name = boundary_value)

    Supprime le membre de fédération au niveau supérieur (HIGH) de la valeur limite et étend le membre de fédération au niveau inférieur (LOW) de la valeur limite. Prenons pour exemple une fédération (fed1) contenant trois membres de fédération couvrant les plages 0,100 (db1), 100,200 (db2) et 200,300 (db3). L'exécution de ALTER FEDERATION fed1 DROP AT (HIGH customer_id=200) produit les effets suivants :

    1. db3 et toutes les données comprise dans la plage 200-300 sont supprimés.

    2. db2 est renommé db4. L'identificateur Dbid de db4 est le même que celui de db2.

    3. db4 couvre à présent la plage 100-300.

Voir aussi

Autres ressources

Gestion des fédérations de base de données