ALTER FEDERATION (Base de datos SQL de Azure)

Modifica la distribución de los datos de una federación en Base de datos SQL de Azure.

Importante

La implementación actual de federaciones se retirará con los niveles de servicio Web y Business. Considere la posibilidad de implementar soluciones personalizadas de particionamiento para maximizar la escalabilidad, la flexibilidad y el rendimiento.Para obtener más información acerca del particionamiento personalizado, vea Ampliar Bases de datos SQL de Windows Azure.

Syntax Conventions (SQL Database)

Se aplica a: Base de datos SQL de Azure.

Sintaxis

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)
}[;]

Argumentos

  • federation_name
    El nombre de la federación que se va a modificar. El nombre debe ser único en la Base de datos SQL, cumplir las reglas de los identificadores y ser de tipo sysname.

  • distribution_name
    El nombre de la clave de federación. El nombre es un identificador que se utiliza para hacer referencia a la clave de federación, y se hace referencia a él mediante instrucciones relacionadas con la federación como CREATE TABLE … FEDERATED ON(...) o USE FEDERATION. Distribution_name debe cumplir las reglas de los identificadores y ser de tipo sysname.

    Boundary_value es el punto de división para la operación de repartición. El valor de límite debe ser un valor válido para el tipo de datos especificado por la clave de federación de la federación. En el caso de una operación SPLIT, el valor se convierte en el range_low y el range_high para los nuevos miembros de federación creados como parte de esta operación.

  • SPLIT AT (distribution_name = boundary_value)
    Mueve los datos del miembro de federación que contiene actualmente el valor de límite a dos nuevos miembros de federación. Todas las filas de tablas federadas con instancias de clave de federación menores que boundary_value se copian en uno de los nuevos miembros de federación de destino. Las instancias mayores o iguales que boundary_value se copian en el otro nuevo miembro de federación. El resto de objetos como tablas de referencia, procedimientos almacenados, funciones, usuarios y permisos definidos en objetos se clonan en los nuevos miembros de federación.

  • DROP AT ([LOW | HIGH] distribution_name = boundary_value)
    Quita un miembro de federación y extiende el intervalo de un miembro de federación adyacente para cubrir el espacio creado por la operación DROP. Esta operación afecta tanto al miembro de federación que se quita como al miembro de federación adyacente que se extenderá para cubrir el espacio. LOW o HIGH determina el miembro de federación que se quitará en el boundary_value de federación dado. El valor de límite debe corresponder a un valor de partición existente (range-high o range-low de miembros de federación) en la federación.

    Durante la operación DROP, no hay ninguna comparación de esquemas entre los miembros de federación afectados. DROP AT no necesita una copia física de los datos. Se eliminarán los datos que contiene el miembro. DROP AT también restablece las conexiones y cambia el DB_NAME() de los miembros de federación afectados.

    DROP AT es una operación asincrónica.

  • SWITCH OUT AT ([LOW | HIGH] distribution_name = boundary_value)
    Quita todos los metadatos de federación y las restricciones de la base de datos de miembros de federación. Tras la ejecución, el miembro de federación es una base de datos independiente. Durante una operación SWITCH OUT no se eliminan ni mueven datos. LOW o HIGH determina el miembro de federación que se desactivará en el lado correspondiente de la federación boundary_value dada. El valor de límite debe corresponder a un valor de partición existente, range-high o range-low, en la federación existente. A diferencia de DROP AT, SWITCH OUT no extiende el intervalo de un miembro de federación adyacente para cubrir el espacio creado por la operación. Si le interesa migrar la aplicación de federación a Elastic Scale de Base de datos SQL de Azure, no olvide crear un mapa de recurso compartido antes de ejecutar este comando.

    Advertencia

    El comando SWITCH OUT es permanente.Una vez ejecutado, el miembro dejará de estar accesible con la instrucción USING FEDERATION y la base de datos no se puede agregar a la federación original.La ejecución de este comando no afecta a los demás miembros de la federación.

Comentarios

Se permite la ejecución simultánea de varias operaciones DROP o SPLIT, siempre que ninguno de los miembros de federación de origen o de destino se superpongan.

Propiedades de la operación SPLIT

  • La instrucción ALTER FEDERATION … SPLIT debe ser la única del lote, y no puede formar parte de una transacción exterior.

  • La instrucción ALTER FEDERATION … SPLIT solo se puede ejecutar mientras se está conectado a la base de datos de raíz de federación.

  • Solo puede haber un comando DROP o SPLIT activo en un momento determinado en los miembros de federación afectados. Puede haber muchos comandos DROP y SPLIT activos simultáneamente, siempre que estén operando en distintos miembros de una federación.

  • Todos los miembros de la federación de destino (los miembros de federación creados como consecuencia de una operación SPLIT) heredan las propiedades MAXSIZE y EDITION del miembro de la federación de origen.

  • La operación SPLIT es una operación atómica. Todos los miembros de destino deben crearse y sincronizarse correctamente para que se complete la operación SPLIT.

  • La operación SPLIT es una operación asincrónica.

    Mientras SPLIT se ejecuta

    • Todos los objetos, esquemas y metadatos del sistema normales (no federados) se copian del miembro de la federación de origen que se está dividiendo en el miembro de la federación de destino. Esta lista incluye usuarios, roles, permisos de objetos, procedimientos almacenados, vistas, tablas federadas o de referencia, índices, etc. La única excepción son las estadísticas de distribución, que se marcan para volver a calcularlas. Las estadísticas marcadas con NORECOMPUTE se conservan y no se vuelven a calcular en tablas federadas después de las operaciones de repartición.

    • Todos los esquemas de tabla federada se copian del miembro de la federación de origen que se está dividiendo en el miembro de la federación de destino.

    • Los datos de usuario de las tablas federadas se mueven a los miembros de la federación de destino según el valor de límite.

    • Los datos de usuario de todas las tablas de referencia se clonan y se mueven al miembro de la federación de destino.

    Cuando finaliza la operación SPLIT:

    • El nuevo miembro de federación contiene todos los datos actualizados en los miembros de la federación de destino correspondientes.

    • La vista sys.federation_members se actualiza para incluir los nuevos miembros de la federación de destino con sus valores de intervalo. El miembro de la federación de origen se quita y ya no existe en sys.databases ni en sys.federation_members.

    • Todas las conexiones existentes con los miembros de la federación de origen se desconectan. Si se vuelve a intentar conectarlas, las nuevas conexiones se enrutan a los nuevos miembros de federación.

Propiedades de la operación DROP

  • La instrucción ALTER FEDERATION … DROP debe ser la única del lote, y no puede formar parte de una transacción exterior.

  • La instrucción ALTER FEDERATION … DROP solo se puede ejecutar mientras se está conectado a la base de datos de raíz de federación.

  • El valor de límite especificado debe corresponder a un límite de intervalo existente (range_high, range_low) de la federación.

  • La operación DROP es una operación asincrónica.

    Cuando se inicia la operación DROP, la opción LOW o HIGH y el valor de límite especificado determinan el miembro de federación que se va a quitar. Se expande un miembro de federación adyacente para cubrir el intervalo del miembro de federación quitado.

    Mientras se está ejecutando DROP, no se realiza ninguna transferencia de datos ni se produce ninguna comparación de esquemas.

    Cuando DROP finaliza:

    • Se cambia el nombre del miembro de federación restante.

    • La tabla sys.federation_members ya no incluye el miembro de federación quitado, y tiene el intervalo actualizado para el miembro de federación restante.

    • Todas las conexiones existentes con los miembros de federación se desconectan. El miembro de federación quitado ya no acepta conexiones. El miembro de federación restante desconecta todas las conexiones existentes.

Propiedades de la operación SWITCH OUT

  • La operación SWITCH OUT debe ser la única del lote, y no puede formar parte de una transacción exterior.

  • La operación SWITCH OUT solo se puede ejecutar mientras se está conectado a la base de datos de raíz de federación.

  • La operación SWITCH OUT es una operación asincrónica.

  • Las nuevas conexiones con el miembro de la federación quedan bloqueadas hasta que se termina la operación.

  • Cuando termina SWITCH OUT:

    • La tabla sys.databases de la base de datos maestra se actualiza para indicar que la base de datos ha dejado de ser miembro de la federación.

    • Todas las conexiones existentes con los miembros de federación se desconectan. El miembro de federación SWITCH OUT ya no aceptará conexiones mediante el comando USING FEDERATION.

    • Se quitan todas las restricciones específicas de la federación de la base de datos de destino y las tablas federadas.

  • Una vez que el comando SWITCH OUT se ha aplicado a todos los miembros de la federación, se pueden eliminar la federación y la base de datos raíz de la federación.

Permisos

Para ejecutar instrucciones CREATE, ALTER y DROP en federaciones, debe estar conectado a la raíz de federación y ser miembro del rol dbmanager en el servidor. También debe ser miembro del grupo dbo para la base de datos.

Las instrucciones SPLIT y DROP requieren permisos CREATE y DROP DATABASE en los miembros de la federación de origen y en el servidor con el que está conectado. En Base de datos SQL de Azure esto está restringido a los miembros del rol de servidor dbmanager. El propietario del miembro de la federación de origen se convierte en el propietario del miembro de la federación de destino, independientemente de la cuenta de usuario que ejecute la operación.

Ejemplos

En el ejemplo siguiente se usa la operación SWITCH OUT para desactivar un miembro de la federación que tiene la clave de federación 99, que se encuentra en el lado inferior del valor de límite de 100.

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

En el ejemplo siguiente se usa la operación SWITCH OUT en una federación de un solo miembro para desactivar en el lado superior del valor de límite de identificador único 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)

    Quita el miembro de una federación a la zona LOW del valor de límite y extiende el miembro de federación a la zona HIGH del valor de límite. Por ejemplo, dada una federación (fed1) que contiene tres miembros de federación que cubren 0,100 (db1), 100,200 (db2) y 200,300 (db3), la emisión de la instrucción ALTER FEDERATION fed1 DROP AT (LOW customer_id=200) realizará las acciones siguientes:

    1. DROP db2 y todos los datos comprendidos entre 100,200

    2. Cambia el nombre de db3 a db4. El Dbid de Db4 permanece igual.

    3. Db4 ahora cubre el intervalo 100,300

  • DROP AT (HIGH distribution_name = boundary_value)

    Quita el miembro de una federación a la zona HIGH del valor de límite, y extiende el miembro de federación a la zona LOW del valor de límite. Por ejemplo, dada una federación (fed1) que contiene tres miembros de federación que cubren 0,100 (db1), 100,200 (db2) y 200,300 (db3), la emisión de la instrucción ALTER FEDERATION fed1 DROP AT (HIGH customer_id=200) realizará las acciones siguientes:

    1. DROP db3 y todos los datos comprendidos entre 200,300

    2. Cambia el nombre de db2 a db4. El Dbid de Db4 permanece igual que db2.

    3. Db4 ahora cubre el intervalo 100,300

Vea también

Otros recursos

Administrar federaciones de bases de datos