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
Este artículo describe cómo crear y aplicar la instantánea inicial en SQL Server utilizando SQL Server Management Studio, Transact-SQL o Replication Management Objects (RMO). Las publicaciones de mezcla que usan filtros con parámetros necesitan una instantánea de dos partes. Para más información, consulte Crear una instantánea para una publicación de mezcla con filtros con parámetros.
El Agente de instantáneas genera instantáneas una vez creada la publicación. Puedes generar instantáneas:
- Inmediatamente. Por defecto, el Asistente de Nuevas Publicaciones genera una instantánea para una publicación de fusión inmediatamente después de crear la publicación.
- A la hora programada. Especifique una programación en la página Agente de instantáneas del Asistente para nueva publicación o al utilizar procedimientos almacenados o Replication Management Objects (RMO).
- Manualmente. Ejecute el Agente de instantáneas desde el símbolo del sistema o desde SQL Server Management Studio. Para obtener más información, vea Conceptos de los ejecutables del Agente de replicación e Iniciar y detener un Agente de replicación (SQL Server Management Studio).
Para la replicación de mezcla, el agente de instantáneas genera una instantánea cada vez que se ejecuta. Para la Replicación Transaccional, la generación de instantáneas depende de la configuración de la propiedad de publicación immediate_sync. Si la propiedad está configurada en TRUE (el valor predeterminado al usar el Asistente de Nueva Publicación), el Agente de instantáneas genera una instantánea cada vez que se ejecuta, y puede aplicar la instantánea a un Suscriptor en cualquier momento. Si la propiedad está configurada como FALSE (el valor por defecto al usar sp_addpublication), el Agente de instantáneas genera una instantánea solo si se añade una nueva suscripción desde la última Agente de instantáneas ejecutada; Los suscriptores deben esperar a que se complete la Agente de instantáneas antes de poder sincronizarse.
Por defecto, el Agente de instantáneas guarda las instantáneas generadas en la carpeta predeterminada de snapshots situada en el Distribuidor. También puedes guardar archivos de instantáneas en medios extraíbles, como discos extraíbles, CD-ROMs o en ubicaciones distintas a la carpeta predeterminada de instantáneas. También puede comprimir los archivos para facilitar su almacenamiento y transferencia, y ejecutar scripts antes o después de que el agente de instantáneas aplique la instantánea al suscriptor. Para obtener más información acerca de estas opciones, consulte Snapshot Options.
Si la instantánea es para una publicación de fusión que utiliza filtros parametrizados, el Agente de instantáneas crea la instantánea mediante un proceso de dos partes. Primero, crea una instantánea del esquema que contiene los scripts de replicación y el esquema de los objetos publicados, pero no los datos. Cada suscripción se inicializa a partir de una instantánea que incluye los scripts y el esquema copiados de la instantánea de esquema, así como los datos correspondientes a la partición de la suscripción. Para más información, consulte Instantáneas para publicaciones de combinación con filtros con parámetros.
Después de que el Agente de instantáneas crea la instantánea en el Publisher y la almacena en una ubicación predeterminada u alternativa, puedes transferir la instantánea al Suscriptor y aplicarla. El agente de distribución (para replicación transaccional o de instantáneas) o el agente de mezcla (para la replicación de mezcla) transfiere la instantánea y aplica el esquema y los archivos de datos a la base de datos de suscripciones del suscriptor durante la sincronización inicial. Por defecto, la sincronización inicial ocurre inmediatamente después de crear una suscripción si usas el Asistente de Nueva Suscripción. La opción Inicializar Cuando en la página Inicializar Suscripciones del asistente controla este comportamiento. Cuando el Agente de instantáneas genera instantáneas tras inicializar una suscripción, no las aplica a un suscriptor a menos que marques una suscripción para reinicialización. Para obtener más información, vea Reinicializar suscripciones.
Una vez que el Agente de distribución o el Agente de mezcla aplican la instantánea inicial, el agente propaga las actualizaciones posteriores y otras modificaciones de datos. Cuando se distribuyen y se aplican instantáneas a los suscriptores, solo se ven afectados los suscriptores que estén esperando instantáneas iniciales o nuevas. Otros suscriptores de esa publicación (aquellos que ya reciben inserciones, actualizaciones, eliminaciones u otras modificaciones en los datos publicados) no se ven afectados.
Para ver o modificar la ubicación de la carpeta de instantáneas predeterminada, vea
SQL Server Management Studio: Modificar opciones de instantánea
Programación de replicación y programación de RMO: Configurar publicación y distribución
Ubicación predeterminada de instantáneas
Especifique la ubicación predeterminada de instantáneas en la página Carpeta de instantáneas del Asistente para configurar la distribución. Para obtener más información sobre cómo usar este asistente, vea Configure Publishing and Distribution (Configurar la publicación y la distribución). Si crea una publicación en un servidor que no está configurado como un distribuidor, especifique una ubicación predeterminada de instantáneas en la página Carpeta de instantáneas del Asistente para nueva publicación. Para obtener más información sobre cómo usar este asistente, vea Crear una publicación.
Modifique la ubicación predeterminada de la instantánea en la página Publicadores del cuadro de diálogo Propiedades del distribuidor - <Distribuidor>. Para obtener más información, vea View and Modify Distributor and Publisher Properties (Ver y modificar las propiedades del distribuidor y del publicador). Establezca la carpeta de instantáneas para cada publicación en el cuadro de diálogo Propiedades de la publicación - <publicación>. Para más información, consulte View and Modify Publication Properties.
Modificación de la ubicación predeterminada de instantáneas
En la página de Publishers del cuadro de diálogo Propiedades del Distribuidor - <Distribuidor>, selecciona el botón de propiedades (...) del Publisher para el que quieres cambiar la ubicación predeterminada de la instantánea.
En el cuadro de diálogo Propiedades del publicador - <publicador>, escriba un valor para la propiedad Carpeta de instantáneas predeterminada.
Nota:
El Agente de instantáneas necesita permisos de escritura para el directorio que especificas, y el Agente de distribución o Agente de mezcla necesita permisos de lectura. Si usas suscripciones de pull, debes especificar un directorio compartido como una ruta de convención universal de nombres (UNC), como \\nombrecomputadora\snapshot. Para obtener más información, vea Proteger la carpeta de instantáneas.
Seleccione Aceptar.
Creación de una instantánea
Por defecto, si Agente SQL Server está en ejecución, el Agente de instantáneas genera una instantánea inmediatamente después de crear una publicación usando el Asistente de Nueva Publicación. De forma predeterminada, el agente de distribución (para la replicación de instantáneas y transaccional) o el agente de mezcla (para las suscripciones de mezcla) aplica la instantánea a todas las suscripciones. También puedes generar una instantánea usando SQL Server Management Studio y Replication Monitor. Para información sobre cómo iniciar el Monitor de replicación, vea Iniciar el Monitor de replicación.
Uso de SQL Server Management Studio
- Conéctese al publicador en Management Studio y, a continuación, expanda el nodo de servidor.
- Expanda la carpeta Replicación y, a continuación, expanda la carpeta Publicaciones locales .
- Haz clic derecho en la publicación para la que quieres crear una instantánea y luego selecciona Ver estado del Agente de instantáneas.
- En el cuadro de diálogo View Agente de instantáneas Status - <Publicación>, seleccione Inicio.
Cuando el Agente de instantáneas termina de generar la instantánea, muestra un mensaje, como "[100%] Se generó una instantánea de 17 artículos."
En el Monitor de replicación
- En el Monitor de replicación, expanda un grupo de publicador en el panel izquierdo y, a continuación, expanda un publicador.
- Haz clic derecho en la publicación para la que quieres generar una instantánea y luego selecciona Generar instantánea.
- Para ver el estado del Agente de instantáneas, seleccione la pestaña Agentes. Para obtener información más detallada, haga clic derecho en Agente de instantáneas en la cuadrícula y luego seleccione Ver detalles.
Uso de Transact-SQL
Puedes crear instantáneas iniciales programáticamente creando y ejecutando un trabajo Agente de instantáneas o ejecutando el archivo ejecutable Agente de instantáneas desde un archivo batch. Una vez generada una instantánea inicial, se transfiere y se aplica en el suscriptor cuando se sincroniza la suscripción por primera vez. Si ejecutas el Agente de instantáneas desde un símbolo de comandos o un archivo batch, necesitas volver a ejecutar el agente cada vez que la instantánea existente se vuelva inválida.
Importante
Cuando sea posible, pida a los usuarios que proporcionen credenciales de seguridad en tiempo de ejecución. Si debe almacenar credenciales en un archivo de script, proteja el archivo para evitar el acceso no autorizado.
Cree una publicación de instantáneas, transaccional o de combinación. Para obtener más información, vea Crear una suscripción.
Ejecute sp_addpublication_snapshot (Transact-SQL). Especifique @publication y los siguientes parámetros:
@job_login, que especifica las credenciales de autenticación de Windows con las que se ejecuta el Agente de instantáneas en el distribuidor.
@job_password, que es la contraseña para las credenciales de Windows proporcionadas.
(Opcional) Un valor de 0 para @publisher_security_mode si el agente utiliza SQL Server Autenticación al conectarse al Publisher. En este caso, debe especificar también la información de inicio de sesión de autenticación de SQL Server para @publisher_login y @publisher_password.
(Opcional) Un programa de sincronización para el trabajo del Agente de instantáneas. Para obtener más información, consulte Specify Synchronization Schedules.
Importante
Cuando configuras un Publisher con un distribuidor remoto, los valores que suministras para todos los parámetros, incluidos job_login y job_password, se envían al distribuidor en texto plano. Cifra la conexión entre el Publisher y su distribuidor remoto antes de ejecutar este procedimiento almacenado. Para obtener más información, vea Habilitar conexiones cifradas en el motor de base de datos (Administrador de configuración de SQL Server).
Agregue artículos a la publicación. Para más información, consulte Define an Article.
En el publicador de la base de datos de publicación, ejecute sp_startpublication_snapshot (Transact-SQL) y especifique el valor de @publication del paso 1.
Aplicación de una instantánea
Uso de SQL Server Management Studio
Después de generar la instantánea, sincroniza la suscripción con el Agente de distribución o el Agente de mezcla para aplicarla:
Si el agente se ejecuta de forma continua (el valor predeterminado para la replicación transaccional), aplica automáticamente la instantánea después de generarla.
Si el agente se ejecuta de forma programada, aplicará la instantánea la próxima vez que se ejecute.
Si el agente se ejecuta bajo demanda, aplica la instantánea la próxima vez que la ejecutes.
Para obtener más información acerca de cómo sincronizar suscripciones, vea Synchronize a Push Subscription y Synchronize a Pull Subscription.
Uso de Transact-SQL
Cree una publicación de instantáneas, transaccional o de combinación. Para obtener más información, vea Crear una suscripción.
Agregue artículos a la publicación. Para más información, consulte Define an Article.
Desde el símbolo del sistema o en un archivo por lotes, inicie el Replication Agente de instantáneas ejecutando snapshot.exey especifique los argumentos de la línea de comandos siguientes:
- -Publicación
- -Publisher
- -Distribuidor
- -PublisherDB
- -ReplicationType
Si usas la autenticación de SQL Server, especifica también los siguientes argumentos:
- -DistributorLogin
- -DistributorPassword
- -Modo = de Seguridad del Distribuidor0
- -PublisherLogin
- -PublisherPassword
- -Modo = de Seguridad del Editor0
Ejemplos (Transact-SQL)
Este ejemplo muestra cómo crear una publicación transaccional y agregar un trabajo del Agente de instantáneas a la nueva publicación (utilizando variables de script de sqlcmd). En el ejemplo también se inicia el trabajo.
-- To avoid storing the login and password in the script file, the values
-- are passed into SQLCMD as scripting variables. For information about
-- how to use scripting variables on the command line and in SQL Server
-- Management Studio, see the "Executing Replication Scripts" section in
-- the topic "Programming Replication Using System Stored Procedures".
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks2022'; --publication database
SET @publication = N'AdvWorksCustomerTran'; -- transactional publication name
SET @login = $(Login);
SET @password = $(Password);
USE [AdventureWorks]
-- Enable transactional and snapshot replication on the publication database.
EXEC sp_replicationdboption
@dbname = @publicationDB,
@optname = N'publish',
@value = N'true';
-- Execute sp_addlogreader_agent to create the agent job.
EXEC sp_addlogreader_agent
@job_login = @login,
@job_password = @password,
-- Explicitly specify the security mode used when connecting to the Publisher.
@publisher_security_mode = 1;
-- Create new transactional publication, using the defaults.
USE [AdventureWorks2022]
EXEC sp_addpublication
@publication = @publication,
@description = N'transactional publication';
-- Create a new snapshot job for the publication, using the defaults.
EXEC sp_addpublication_snapshot
@publication = @publication,
@job_login = @login,
@job_password = @password;
-- Start the Snapshot Agent job.
EXEC sp_startpublication_snapshot @publication = @publication;
GO
En este ejemplo se crea una publicación de combinación y se agrega un trabajo del Agente de instantáneas (utilizando variables de sqlcmd ) para la publicación. Este ejemplo también inicia la tarea.
-- To avoid storing the login and password in the script file, the value
-- is passed into SQLCMD as a scripting variable. For information about
-- how to use scripting variables on the command line and in SQL Server
-- Management Studio, see the "Executing Replication Scripts" section in
-- the topic "Programming Replication Using System Stored Procedures".
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks2022';
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @login = $(Login);
SET @password = $(Password);
-- Enable merge replication on the publication database.
USE master
EXEC sp_replicationdboption
@dbname = @publicationDB,
@optname=N'merge publish',
@value = N'true';
-- Create new merge publication, using the defaults.
USE [AdventureWorks]
EXEC sp_addmergepublication
@publication = @publication,
@description = N'Merge publication.';
-- Create a new snapshot job for the publication, using the defaults.
EXEC sp_addpublication_snapshot
@publication = @publication,
@job_login = @login,
@job_password = @password;
-- Start the Snapshot Agent job.
EXEC sp_startpublication_snapshot @publication = @publication;
GO
Los siguientes argumentos de la línea de comandos inician el Agente de instantáneas para que genere la instantánea para una publicación de combinación.
Nota:
Se añadieron saltos de línea para mejorar la legibilidad. En un archivo batch, debes hacer comandos en una sola línea.
REM -- Declare variables
SET Publisher=%InstanceName%
SET PublicationDB=AdventureWorks2022
SET Publication=AdvWorksSalesOrdersMerge
REM --Start the Snapshot Agent to generate the snapshot for AdvWorksSalesOrdersMerge.
"C:\Program Files\Microsoft SQL Server\120\COM\SNAPSHOT.EXE" -Publication %Publication%
-Publisher %Publisher% -Distributor %Publisher% -PublisherDB %PublicationDB%
-ReplicationType 2 -OutputVerboseLevel 1 -DistributorSecurityMode 1
Uso de los objetos de administración de replicación (RMO)
El Agente de instantáneas genera instantáneas después de crear una publicación. Puedes generar estas instantáneas programáticamente usando Replication Management Objects (RMO) y acceder directamente al código gestionado a las funcionalidades de agentes de replicación. Los objetos que se usan dependen del tipo de replicación. Puedes iniciar el Agente de instantáneas de forma sincrónica usando el SnapshotGenerationAgent objeto o de forma asincrónica usando el job agente. Una vez generada la instantánea inicial, el Agente de instantáneas la transfiere al Suscriptor y la aplica cuando la suscripción se sincroniza por primera vez. Necesitas volver a ejecutar el agente cada vez que la instantánea existente ya no contenga datos válidos y actualizados. Para obtener más información, vea Mantener publicaciones.
Importante
Cuando sea posible, pida a los usuarios que proporcionen credenciales de seguridad en tiempo de ejecución. Si debe almacenar credenciales, use los servicios de cifrado (en inglés) proporcionados por Microsoft Windows .NET Framework.
Para generar la instantánea inicial de una publicación transaccional o de instantáneas iniciando el trabajo del Agente de instantáneas (asincrónico)
Cree una conexión al publicador mediante la clase ServerConnection .
Cree una instancia de la clase TransPublication. Establezca las propiedades Name y DatabaseName para la publicación y la propiedad ConnectionContext en la conexión creada en el paso 1.
Llame al método LoadProperties para cargar las propiedades restantes del objeto. Si este método devuelve falso, o bien las propiedades de publicación del paso 2 están definidas incorrectamente o la publicación no existe.
Si el valor de SnapshotAgentExists es false, llame a CreateSnapshotAgent para crear el trabajo de Agente de instantáneas para esta publicación.
Llame al método StartSnapshotGenerationAgentJob para iniciar el trabajo del agente que genera la instantánea inicial de esta publicación.
(Opcional) Cuando el valor de SnapshotAvailable es true, la instantánea está disponible para los suscriptores.
Para generar la instantánea inicial de una publicación transaccional o de instantáneas ejecutando el trabajo del Agente de instantáneas (sincrónico)
Cree una instancia de la clase SnapshotGenerationAgent y establezca las propiedades necesarias siguientes:
Publisher - nombre del publicador
PublisherDatabase - nombre de la base de datos de publicación
Publication - nombre de la publicación
Distributor - nombre del distribuidor
PublisherSecurityMode - un valor de Integrated para usar la autenticación de Windows al conectarse al publicador o un valor de Standard y valores para PublisherLogin y PublisherPassword para usar la autenticación de SQL Server al conectarse al publicador. Se recomienda la autenticación de Windows.
DistributorSecurityMode - un valor de Integrated para usar la autenticación de Windows al conectarse al distribuidor o un valor de Standard y valores para DistributorLogin y DistributorPassword para usar la autenticación de SQL Server al conectarse al distribuidor. Se recomienda la autenticación de Windows.
Establezca un valor de Transactional o Snapshot para ReplicationType.
Llame al método GenerateSnapshot.
Para generar la instantánea inicial de una publicación de combinación iniciando el trabajo del Agente de instantáneas (asincrónico)
Cree una conexión al publicador mediante la clase ServerConnection .
Cree una instancia de la clase MergePublication. Establezca las propiedades Name y DatabaseName para la publicación y la propiedad ConnectionContext en la conexión creada en el paso 1.
Llame al método LoadProperties para cargar las propiedades restantes del objeto. Si este método devuelve falso, o bien las propiedades de publicación del paso 2 están definidas incorrectamente o la publicación no existe.
Si el valor de SnapshotAgentExists es false, llame a CreateSnapshotAgent para crear el trabajo de Agente de instantáneas para esta publicación.
Llame al método StartSnapshotGenerationAgentJob para iniciar el trabajo del agente que genera la instantánea inicial de esta publicación.
(Opcional) Cuando el valor de SnapshotAvailable es true, la instantánea está disponible para los suscriptores.
Para generar la instantánea inicial de una publicación de mezcla, ejecute el Agente de instantáneas (sincrónico)
Cree una instancia de la clase SnapshotGenerationAgent y establezca las propiedades necesarias siguientes:
Publisher - nombre del publicador
PublisherDatabase - nombre de la base de datos de publicación
Publication - nombre de la publicación
Distributor - nombre del distribuidor
PublisherSecurityMode - un valor de Integrated para usar la autenticación de Windows al conectarse al publicador o un valor de Standard y valores para PublisherLogin y PublisherPassword para usar la autenticación de SQL Server al conectarse al publicador. Se recomienda la autenticación de Windows.
DistributorSecurityMode - un valor de Integrated para usar la autenticación de Windows al conectarse al distribuidor o un valor de Standard y valores para DistributorLogin y DistributorPassword para usar la autenticación de SQL Server al conectarse al distribuidor. Se recomienda la autenticación de Windows.
Establezca un valor Merge para ReplicationType.
Llame al método GenerateSnapshot.
Ejemplos (RMO)
Este ejemplo ejecuta sincrónicamente el Agente de instantáneas para generar la instantánea inicial de una publicación transaccional.
// Set the Publisher, publication database, and publication names.
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2022";
string publisherName = publisherInstance;
string distributorName = publisherInstance;
SnapshotGenerationAgent agent;
try
{
// Set the required properties for Snapshot Agent.
agent = new SnapshotGenerationAgent();
agent.Distributor = distributorName;
agent.DistributorSecurityMode = SecurityMode.Integrated;
agent.Publisher = publisherName;
agent.PublisherSecurityMode = SecurityMode.Integrated;
agent.Publication = publicationName;
agent.PublisherDatabase = publicationDbName;
agent.ReplicationType = ReplicationType.Transactional;
// Start the agent synchronously.
agent.GenerateSnapshot();
}
catch (Exception ex)
{
// Implement custom application error handling here.
throw new ApplicationException(String.Format(
"A snapshot could not be generated for the {0} publication."
, publicationName), ex);
}
' Set the Publisher, publication database, and publication names.
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2022"
Dim publisherName As String = publisherInstance
Dim distributorName As String = publisherInstance
Dim agent As SnapshotGenerationAgent
Try
' Set the required properties for Snapshot Agent.
agent = New SnapshotGenerationAgent()
agent.Distributor = distributorName
agent.DistributorSecurityMode = SecurityMode.Integrated
agent.Publisher = publisherName
agent.PublisherSecurityMode = SecurityMode.Integrated
agent.Publication = publicationName
agent.PublisherDatabase = publicationDbName
agent.ReplicationType = ReplicationType.Transactional
' Start the agent synchronously.
agent.GenerateSnapshot()
Catch ex As Exception
' Implement custom application error handling here.
Throw New ApplicationException(String.Format( _
"A snapshot could not be generated for the {0} publication." _
, publicationName), ex)
End Try
Este ejemplo inicia de forma asincrónica el trabajo del agente para generar la instantánea inicial de una publicación transaccional.
// Set the Publisher, publication database, and publication names.
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2022";
string publisherName = publisherInstance;
TransPublication publication;
// Create a connection to the Publisher using Windows Authentication.
ServerConnection conn;
conn = new ServerConnection(publisherName);
try
{
// Connect to the Publisher.
conn.Connect();
// Set the required properties for an existing publication.
publication = new TransPublication();
publication.ConnectionContext = conn;
publication.Name = publicationName;
publication.DatabaseName = publicationDbName;
if (publication.LoadProperties())
{
// Start the Snapshot Agent job for the publication.
publication.StartSnapshotGenerationAgentJob();
}
else
{
throw new ApplicationException(String.Format(
"The {0} publication does not exist.", publicationName));
}
}
catch (Exception ex)
{
// Implement custom application error handling here.
throw new ApplicationException(String.Format(
"A snapshot could not be generated for the {0} publication."
, publicationName), ex);
}
finally
{
conn.Disconnect();
}
' Set the Publisher, publication database, and publication names.
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2022"
Dim publisherName As String = publisherInstance
Dim publication As TransPublication
' Create a connection to the Publisher using Windows Authentication.
Dim conn As ServerConnection
conn = New ServerConnection(publisherName)
Try
' Connect to the Publisher.
conn.Connect()
' Set the required properties for an existing publication.
publication = New TransPublication()
publication.ConnectionContext = conn
publication.Name = publicationName
publication.DatabaseName = publicationDbName
If publication.LoadProperties() Then
' Start the Snapshot Agent job for the publication.
publication.StartSnapshotGenerationAgentJob()
Else
Throw New ApplicationException(String.Format( _
"The {0} publication does not exist.", publicationName))
End If
Catch ex As Exception
' Implement custom application error handling here.
Throw New ApplicationException(String.Format( _
"A snapshot could not be generated for the {0} publication." _
, publicationName), ex)
Finally
conn.Disconnect()
End Try
Bloqueo al aplicar la instantánea inicial
Si tiene varias publicaciones que publican datos en una base de datos en los suscriptores, se da cuenta de que solo una publicación puede aplicar su instantánea a la vez mientras se aplican las instantáneas iniciales.
Podrías encontrar un recurso de espera similar al siguiente al revisar la actividad SQL:
APP: 18:16384:[snapshot_delivery_in_progress_Tr]:(9bcdaf92)
APP: 5:16384:[snapshot_delivery_in_progress_Er]:(3c3b7db9)
Consultar el comportamiento de bloqueo puede mostrar recursos similares a los siguientes:
APP 16384:[appname]:(fbe42d68) XAPP 16384:[snapshot_del]:(9bcdaf92) X
Este comportamiento es por diseño. Se produce porque se usa un bloqueo de aplicación para evitar que varios agentes de replicación apliquen simultáneamente instantáneas de publicaciones diferentes a la misma base de datos del suscriptor. Dado que el bloqueo de aplicación contiene el nombre de la base de datos de suscriptores, cualquier publicación que publique en la misma base de datos de suscriptores se verá afectada. El resultado es que solo se puede insertar una instantánea en la base de datos del suscriptor en un momento dado.
Los bloqueos exclusivos se usan en esta situación para ayudar a evitar la posibilidad de que los agentes de replicación se interbloqueen entre sí.
Para solucionar este problema, especifique una base de datos del suscriptor diferente para cada publicación.
Contenido relacionado
- Creación de una publicación
- Crea una suscripción de Pull
- Crear una suscripción push
- Especificar programaciones de sincronización
- Inicializar una suscripción con una instantánea para una nueva publicación
- Conceptos de objetos de gestión de replicación
- Procedimientos recomendados de seguridad de replicación
- Conceptos de procedimientos almacenados del sistema de replicación
- Uso del sqlcmd con variables de scripting