Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Azure SQL Managed Instance
Al crear una publicación puede elegir las tablas y otros objetos de base de datos que desee publicar. Puede publicar los siguientes objetos de base de datos utilizando la replicación.
| Objeto de base de datos | Replicación de instantáneas y replicación transaccional | Replicación de mezcla |
|---|---|---|
| Tablas | X | X |
| Tablas particionadas | X | X |
| Procedimientos almacenados: definición (Transact-SQL y CLR) | X | X |
| Procedimientos almacenados: ejecución (Transact-SQL y CLR) | X | no |
| Vistas | X | X |
| Vistas indexadas | X | X |
| Vistas indizadas como tablas | X | no |
| Tipos definidos por el usuario (CLR) | X | X |
| Funciones definidas por el usuario (Transact-SQL y CLR) | X | X |
| Tipos de datos con alias | X | X |
| Índices de texto completo | X | X |
| Objetos de esquema (restricciones, índices, desencadenadores DML de usuario, propiedades extendidas e intercalación) | X | X |
Crear publicaciones
Para crear una publicación, debe proporcionar la siguiente información:
- El distribuidor.
- La ubicación de los archivos de instantáneas.
- La base de datos de publicaciones.
- El tipo de publicación que se debe crear (de instantánea, transaccional, transaccional con suscripciones actualizables o de combinación).
- Los datos y los objetos de la base de datos (artículos) que se incluirán en la publicación.
- Filtros de fila estáticos y de columna para todos los tipos de publicaciones, y filtros de fila con parámetros y filtros de combinación para publicaciones de mezcla.
- La programación del Agente de instantáneas.
- Las cuentas bajo las que se ejecutarán los siguientes agentes: el Agente de instantáneas para todas las publicaciones; el Agente de lectura del registro para todas las publicaciones transaccionales; el Agente de lectura de cola para las publicaciones transaccionales que permiten suscripciones actualizables.
- Un nombre y una descripción para la publicación.
Para obtener información acerca de cómo trabajar con publicaciones, vea los siguientes temas:
- Create a Publication (Creación de una publicación)
- Definir un artículo
- Ver y modificar propiedades de publicación
- Ver y modificar las propiedades de un artículo
- Eliminar una publicación
- Eliminar un artículo
Nota:
Al eliminar un artículo o una publicación, los objetos no se quitan del suscriptor.
Publicar tablas
El objeto que se publica con más frecuencia es la tabla. Los siguientes vínculos proporcionan información adicional acerca de las áreas relacionadas con la publicación de tablas:
- Filtrar datos publicados
- Opciones de artículo para la replicación transaccional
- Opciones de artículo para la replicación de mezcla
- Replicar columnas de identidad
Cuando se publica una tabla para su replicación, puede especificar qué objetos de esquema deben copiarse al suscriptor, como la integridad referencial declarada (restricciones de clave principal, restricciones de referencia y restricciones de unicidad), los índices, los desencadenadores DML definidos por el usuario (los desencadenadores DDL no se pueden replicar), las propiedades extendidas y el cotejamiento. Las propiedades extendidas solo se replican en la sincronización inicial entre el publicador y el suscriptor. Si agrega o modifica una propiedad extendida después de la sincronización inicial, el cambio no se replica.
Para especificar opciones de esquema, vea Especificar las opciones del esquema o SchemaOption.
Tablas e índices con particiones
La replicación admite la publicación de tablas con particiones e índices. El nivel de soporte depende del tipo de replicación que se utilice y de las opciones que especifique para la publicación y los artículos asociados a las tablas particionadas. Para obtener más información, vea Replicar tablas e índices con particiones.
Publicar procedimientos almacenados
Todos los tipos de replicación permiten replicar definiciones de procedimientos almacenados: el CREATE PROCEDURE se copia en cada suscriptor. En el caso de los procedimientos almacenados CLR (Common Language Runtime), también se copia el ensamblado asociado. Los cambios en los procedimientos se replican a los suscriptores; los cambios en los ensamblados asociados no.
Además de replicar la definición de un procedimiento almacenado, la replicación transaccional permite replicar la ejecución de procedimientos almacenados. Esto resulta de utilidad al replicar los resultados de los procedimientos almacenados orientados al mantenimiento que afectan a grandes cantidades de datos. Para más información, consulte Publicar la ejecución de procedimientos almacenados en la replicación transaccional.
Publicar vistas
Todos los tipos de replicación permiten replicar vistas: La vista (y el índice asociado, si se trata de una vista indizada) se puede copiar al suscriptor, pero la tabla base también debe replicarse.
En las vistas indizadas, la replicación transaccional también permite replicar la vista indizada en forma de tabla y no como vista, eliminando la necesidad de replicar también la tabla base. Para ello, especifique una de las opciones "vista indexada basada en el registro" del parámetro @type de sp_addarticle (Transact-SQL). Para obtener más información sobre cómo usar sp_addarticle, vea Definir un artículo.
Publicar funciones definidas por el usuario
Las CREATE FUNCTION instrucciones para las funciones CLR y las funciones Transact-SQL se copian a cada Suscriptor. En el caso de las funciones CLR, también se copia el ensamblado asociado. Los cambios en las funciones se replican a los Suscriptores; los cambios en los ensamblados asociados no se replican.
Publicación de tipos definidos por el usuario y tipos de datos con alias
Las columnas que usan tipos definidos por el usuario o tipos de datos con alias se replican en los Suscriptores como cualquier otra columna. La CREATE TYPEsentencia para cada tipo replicado se ejecuta en el Suscriptor antes de que se cree la tabla. En el caso de los tipos definidos por el usuario, el ensamblaje asociado también se copia a cada suscriptor. Los cambios en los tipos definidos por el usuario y en los tipos de datos de alias no se replican en los suscriptores.
Si se define un tipo en una base de datos, pero no se hace referencia al mismo en ninguna columna al crear la publicación, el tipo no se copia en los suscriptores. Si posteriormente crea una columna de ese tipo en la base de datos y desea replicarla, primero debe copiar manualmente el tipo y, en el caso de un tipo definido por el usuario, el ensamblado asociado a cada suscriptor.
Publicar índices de texto completo
La CREATE FULLTEXT INDEX instrucción se copia a cada suscriptor y el índice de texto completo se crea en cada suscriptor. Los cambios realizados en los índices de texto completo que usan ALTER FULLTEXT INDEX no se replican.
Realizar cambios en el esquema de objetos publicados
La replicación admite una gran variedad de cambios en el esquema de objetos publicados. Cuando realice cualquiera de los siguientes cambios de esquema en el objeto publicado correspondiente en un publicador de SQL Server, ese cambio se propaga de manera predeterminada a todos los suscriptores de SQL Server:
ALTER TABLE
ALTER VIEW
ALTER PROCEDURE
ALTER FUNCTION
ALTER TRIGGER
Para más información, vea Realizar cambios de esquema en bases de datos de publicaciones.
Consideraciones sobre las publicaciones
Tenga en cuenta los siguientes aspectos a la hora de publicar objetos de base de datos:
Los usuarios pueden tener acceso a la base de datos durante la creación de la publicación y la instantánea inicial, pero es aconsejable crear publicaciones durante los períodos de baja actividad en el publicador.
No se puede cambiar el nombre de una base de datos después de crear en ella una publicación. Para cambiarle el nombre, primero debe quitar la replicación de la base de datos.
Para publicar un objeto de base de datos que depende de uno o más objetos de base de datos, debe publicar todos los objetos a los que se hace referencia. Por ejemplo, si publica una vista que depende de una tabla, también debe publicar la tabla.
Nota:
Si se agrega un artículo a una publicación de combinación y ya hay un artículo que depende de este nuevo artículo, debe especificar un orden de procesamiento para los dos artículos con el parámetro @processing_order de sp_addmergearticle y sp_changemergearticle. Considere el caso siguiente: publica una tabla pero no publica una función a la que hace referencia la tabla. Si no publica la función, la tabla no podrá crearse en el Suscriptor. Al agregar la función a la publicación: especifique el valor 1 para el parámetro @processing_order de sp_addmergearticley el valor 2 para el parámetro @processing_order de sp_changemergearticle; especifique el nombre de la tabla para el parámetro @article. Este orden de procesamiento garantiza que la función se cree en Subscriber antes que la tabla que depende de ella. Puede usar números distintos para cada artículo, siempre que el número de la función sea inferior al de la tabla.
Los nombres de publicación no pueden incluir los caracteres siguientes: % * [ ] | : " ? \ / <>.
Limitaciones en la publicación de objetos
El número máximo de artículos y columnas que pueden publicarse varía según el tipo de publicación. Para obtener más información, vea la sección "Replication Objects" (Objetos de replicación) de Maximum Capacity Specifications for SQL Server (Especificaciones de capacidad máxima para SQL Server).
Los procedimientos almacenados, vistas, desencadenadores y funciones definidas por el usuario que están definidos como WITH ENCRYPTION no se pueden publicar como parte de la replicación de SQL Server.
Las colecciones de esquemas XML se pueden replicar pero los cambios no se replican después de la instantánea inicial.
Las tablas publicadas para la replicación transaccional deben tener una clave principal. Si una tabla se encuentra en una publicación de replicación transaccional, no puede deshabilitar ningún índice que esté asociado con las columnas de clave principal. Estos índices son necesarios para la replicación. Para deshabilitar un índice, primero debe quitar la tabla de la publicación.
Los valores predeterminados enlazados creados con sp_bindefault (Transact-SQL) no se replican (los valores predeterminados enlazados están en desuso en favor de los valores predeterminados creados con la DEFAULT palabra clave de ALTER TABLE o CREATE TABLE).
Las funciones que contienen la sugerencia NOEXPAND en vistas indizadas no se pueden publicar en la misma publicación que las tablas y las vistas indizadas a las que se hace referencia, debido al orden en que el agente de distribución las entrega. Para evitar este problema, coloque la creación de tablas y vistas indizadas en una primera publicación, y agregue las funciones que contienen la sugerencia NOEXPAND en las vistas indizadas en una segunda publicación que se publique después de que se complete la primera publicación. O bien, cree scripts para estas funciones y entregue el script mediante el parámetro @post_snapshot_script de sp_addpublication.
Esquemas y propiedad de objetos
La replicación tiene el siguiente comportamiento predeterminado en el Asistente para nueva publicación con respecto a los esquemas y a la propiedad de objetos:
Para los artículos de publicaciones de mezcla con un nivel de compatibilidad de 90 o superior, publicaciones de instantánea y publicaciones transaccionales: de forma predeterminada, el propietario del objeto en el Suscriptor es el mismo que el del objeto correspondiente en el Publicador. Si en el suscriptor no existen esquemas que posean objetos, se crean de forma automática.
Para los artículos de publicaciones de combinación con un nivel de compatibilidad inferior a 90, de manera predeterminada el propietario se deja en blanco y se establece como dbo durante la creación del objeto en el Suscriptor.
Para artículos de publicaciones de Oracle: de forma predeterminada, el propietario se especifica como dbo.
Para artículos de publicaciones que utilizan instantáneas en modo de carácter (que se utilizan para los que no son suscriptores de SQL Server y para los suscriptores de SQL Server Compact): de manera predeterminada, el propietario se deja en blanco. Como valor predeterminado del propietario se utiliza el propietario asociado con la cuenta utilizada por el Agente de distribución o el Agente de mezcla para conectarse con el suscriptor.
El propietario del objeto se puede cambiar mediante el cuadro de diálogo Propiedades del artículo - <Artículo> y mediante los siguientes procedimientos almacenados: sp_addarticle, sp_addmergearticle, sp_changearticle y sp_changemergearticle. Para más información, vea Ver y modificar propiedades de publicación, Definir un artículo y Ver y modificar las propiedades de un artículo.
Publicar datos en suscriptores que ejecutan versiones anteriores de SQL Server
Si va a publicar en un suscriptor que ejecuta una versión anterior de SQL Server, está limitado por la funcionalidad de esa versión, tanto en cuestiones de funcionalidad específica de la replicación como en la funcionalidad general del producto.
Las publicaciones de combinación utilizan un nivel de compatibilidad que determina las características que se pueden usar en una publicación y le permite admitir suscriptores que ejecuten versiones anteriores de SQL Server.
Publicar tablas en más de una publicación
La replicación es compatible con la publicación de artículos en varias publicaciones (incluso permiten volver a publicar datos) con las siguientes restricciones:
Si un artículo se publica en una publicación transaccional y en una publicación de combinación, asegúrese de que la propiedad @published_in_tran_pub está establecida en TRUE para el artículo de mezcla. Para obtener más información, vea Ver y modificar propiedades de publicación y Ver y modificar las propiedades de un artículo.
También debería establecer la propiedad @published_in_tran_pub si un artículo forma parte de una suscripción transaccional y está incluido en una publicación de combinación. Si éste es el caso, tenga en cuenta que, de forma predeterminada, la replicación transaccional espera que las tablas del suscriptor se traten como de solo lectura; si la replicación de mezcla realiza cambios en los datos de una tabla de una suscripción transaccional, se puede producir la no convergencia de los datos. Para evitar esta posibilidad, se recomienda que cada tabla de este tipo se especifique como solo para descarga en la publicación de combinación. Esto evita que un suscriptor de mezcla cargue cambios de datos en la tabla. Para más información, consulte Optimizar el rendimiento de la replicación de mezcla con artículos solo de descarga.
No es posible publicar un artículo en una publicación de combinación y en una publicación transaccional con suscripciones de actualización en cola.
Los artículos incluidos en las publicaciones transaccionales que admiten suscripciones de actualización no se pueden volver a publicar.
Si un artículo se publica en más de una publicación transaccional que admita suscripciones de actualización en cola, las siguientes propiedades deben tener el mismo valor para el artículo en todas las publicaciones:
Propiedad Parámetro en sp_addarticle Gestión del rango de identidades @auto_identity_range (en desuso) y @identityrangemangementoption Intervalo de identidad del publicador @pub_identity_range Intervalo de identidad @identity_range Umbral del rango de identidad @threshold Para obtener más información sobre estos parámetros, consulte sp_addarticle (Transact-SQL).
Si un artículo se publica en más de una publicación de combinación, las siguientes propiedades deben tener el mismo valor para el artículo en todas las publicaciones:
Propiedad Parámetro en sp_addmergearticle Seguimiento de columnas @column_tracking Opciones del esquema @schema_option Filtrado de columnas @vertical_partition Opciones de carga de suscriptor @subscriber_upload_options Seguimiento condicional de eliminaciones @delete_tracking Compensación de errores @compensate_for_errors Gestión del rango de identidades @auto_identity_range (en desuso) y @identityrangemangementoption Rango de identidades del editor @pub_identity_range Intervalo de identidad @identity_range Umbral del rango de identidades @threshold Opciones de partición @partition_options Transmisión en flujo de columnas BLOB @stream_blob_columns Tipo de filtro @filter_type (parámetro de sp_addmergefilter) Para obtener más información sobre estos parámetros, consulte sp_addmergearticle (Transact-SQL) y sp_addmergefilter (Transact-SQL).
La replicación transaccional y la replicación de mezcla sin filtrar admiten la publicación de una tabla en varias publicaciones y la posterior suscripción en una única tabla en la base de datos de suscripciones (es lo que normalmente se denomina un escenario de acumulación). La consolidación (roll-up) se utiliza a menudo para agregar subconjuntos de datos de varias ubicaciones en una sola tabla en un Suscriptor central. Las publicaciones de mezcla filtradas no son compatibles con el escenario del Suscriptor central. En la replicación de mezcla, la consolidación suele implementarse mediante una única publicación con filtros de fila parametrizados. Para obtener más información, consulte Filtros de fila con parámetros.