sp_addpublication_snapshot (Transact-SQL)

Se aplica a:SQL ServerAzure SQL Managed Instance

Crea el Agente de instantáneas en la publicación especificada. Este procedimiento almacenado se ejecuta en el publicador de la base de datos de publicación.

Importante

Al configurar un publicador con un distribuidor remoto, los valores suministrados para todos los parámetros, incluidos job_login y job_password, se envían al distribuidor como texto sin formato. Antes de ejecutar este procedimiento almacenado, se recomienda cifrar la conexión entre el publicador y su distribuidor remoto. Para más información, consulte Configuración del Motor de base de datos de SQL Server para el cifrado de las conexiones.

Convenciones de sintaxis de Transact-SQL

Sintaxis

sp_addpublication_snapshot
    [ @publication = ] N'publication'
    [ , [ @frequency_type = ] frequency_type ]
    [ , [ @frequency_interval = ] frequency_interval ]
    [ , [ @frequency_subday = ] frequency_subday ]
    [ , [ @frequency_subday_interval = ] frequency_subday_interval ]
    [ , [ @frequency_relative_interval = ] frequency_relative_interval ]
    [ , [ @frequency_recurrence_factor = ] frequency_recurrence_factor ]
    [ , [ @active_start_date = ] active_start_date ]
    [ , [ @active_end_date = ] active_end_date ]
    [ , [ @active_start_time_of_day = ] active_start_time_of_day ]
    [ , [ @active_end_time_of_day = ] active_end_time_of_day ]
    [ , [ @snapshot_job_name = ] N'snapshot_job_name' ]
    [ , [ @publisher_security_mode = ] publisher_security_mode ]
    [ , [ @publisher_login = ] N'publisher_login' ]
    [ , [ @publisher_password = ] N'publisher_password' ]
    [ , [ @job_login = ] N'job_login' ]
    [ , [ @job_password = ] N'job_password' ]
    [ , [ @publisher = ] N'publisher' ]
    [ , [ @distributor_security_mode = ] distributor_security_mode ]
    [ , [ @distributor_login = ] N'distributor_login' ]
    [ , [ @distributor_password = ] N'distributor_password' ]
[ ; ]

Argumentos

[ @publication = ] N'publication'

Nombre de la publicación. @publication es sysname, sin ningún valor predeterminado.

[ @frequency_type = ] frequency_type

Frecuencia con la que se ejecuta el Agente de instantáneas. @frequency_type es int y puede ser uno de los siguientes valores.

Valor Descripción
1 Una vez
4 (valor predeterminado) Diario
8 Semanal
16 Mensual
32 Mensualmente, dependiendo del intervalo de frecuencia
64 Cuando se inicia Agente SQL Server
128 Ejecutar cuando el equipo está inactivo

[ @frequency_interval = ] frequency_interval

Valor que se va a aplicar a la frecuencia establecida por @frequency_type. @frequency_interval es int y puede ser uno de los siguientes valores.

Valor de frequency_type Efecto en frequency_interval
1 @frequency_interval no se usa.
4 (valor predeterminado) Cada @frequency_interval días, con un valor predeterminado diario.
8 @frequency_interval es una o varias de las siguientes (combinadas con | (OR bit a bit) operador lógico):

1 = Domingo |

2 = Lunes |

4 = Martes |

8 = Miércoles |

16 = Jueves |

32 = Viernes |

64 = Sábado
16 En el @frequency_interval día del mes.
32 @frequency_interval es uno de los siguientes valores:

1 = Domingo |

2 = Lunes |

3 = Martes |

4 = Miércoles |

5 = Jueves |

6 = Viernes |

7 = Sábado |

8 = Día |

9 = Día de la semana |

10 = Día del fin de semana
64 @frequency_interval no se usa.
128 @frequency_interval no se usa.

[ @frequency_subday = ] frequency_subday

Unidad de freq_subday_interval. @frequency_subday es int y puede ser uno de estos valores.

Valor Descripción
1 Una vez
2 Second
4 (valor predeterminado) Minute
8 Hora

[ @frequency_subday_interval = ] frequency_subday_interval

Intervalo de frequency_subday, en minutos. @frequency_subday_interval es int, con un valor predeterminado de 5.

[ @frequency_relative_interval = ] frequency_relative_interval

Fecha en que se ejecuta el Agente de instantáneas. @frequency_relative_interval es int, con un valor predeterminado de 1.

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

Factor de periodicidad utilizado por frequency_type. @frequency_recurrence_factor es int, con un valor predeterminado de 0.

[ @active_start_date = ] active_start_date

Fecha en la que el Agente de instantáneas se programa por primera vez, con el formato yyyyMMdd. @active_start_date es int, con un valor predeterminado de 0.

[ @active_end_date = ] active_end_date

Fecha en la que el Agente de instantáneas deja de programarse, con el formato yyyyMMdd. @active_end_date es int, con un valor predeterminado de , lo que significa el 31 de 99991231diciembre de 9999.

[ @active_start_time_of_day = ] active_start_time_of_day

La hora del día en que el Agente de instantáneas se programa por primera vez, con HHmmssel formato . @active_start_time_of_day es int, con un valor predeterminado de 0.

[ @active_end_time_of_day = ] active_end_time_of_day

Hora del día en que el Agente de instantáneas deja de programarse, con el formato HHmmss. @active_end_time_of_day es int, con un valor predeterminado de 235959, lo que significa 11:59:59 p.m. como se mide en un reloj de 24 horas.

[ @snapshot_job_name = ] N'snapshot_job_name'

Nombre de un Agente de instantáneas nombre de trabajo existente si se usa un trabajo existente. @snapshot_job_name es nvarchar(100), con un valor predeterminado de NULL. Este parámetro es para uso interno y no debe especificarse al crear una nueva publicación. Si se especifica @snapshot_agent_name , @job_login y @job_password deben ser NULL.

[ @publisher_security_mode = ] publisher_security_mode

Nota:

El identificador de Microsoft Entra se conocía anteriormente como Azure Active Directory (Azure AD).

Modo de seguridad utilizado por el agente al conectarse al publicador. @publisher_security_mode es int, con un valor predeterminado de 1. Se debe especificar un valor de 0 para publicadores que no son de SQL Server. Siempre que sea posible, utilice la autenticación de Windows.. Los valores siguientes definen el modo de seguridad:

  • 0 especifica la autenticación de SQL Server.
  • 1especifica autenticación de Windows.
  • 2 especifica la autenticación con contraseña de Microsoft Entra, a partir de SQL Server 2022 (16.x) CU 6.
  • 3 especifica la autenticación integrada de Microsoft Entra, a partir de SQL Server 2022 (16.x) CU 6.
  • 4 especifica la autenticación de tokens de Microsoft Entra, a partir de SQL Server 2022 (16.x) CU 6.

[ @publisher_login = ] N'publisher_login'

Inicio de sesión utilizado al conectar al publicador. @publisher_login es sysname, con un valor predeterminado de NULL. @publisher_login debe especificarse cuando @publisher_security_mode sea 0. Si @publisher_login es NULL y @publisher_security_mode es 1, la cuenta especificada en @job_login se usa al conectarse al publicador.

[ @publisher_password = ] N'publisher_password'

Contraseña usada al conectarse al publicador. @publisher_password es sysname, con un valor predeterminado de NULL.

Importante

No almacene información de autenticación en archivos de script. Para ayudar a mejorar la seguridad, se recomienda proporcionar nombres de inicio de sesión y contraseñas en tiempo de ejecución.

[ @job_login = ] N'job_login'

Inicio de sesión de la cuenta con la que se ejecuta el agente. En Azure SQL Instancia administrada, use una cuenta de SQL Server. @job_login es nvarchar(257), con un valor predeterminado de NULL. Esta cuenta siempre se usa para las conexiones de agente al distribuidor. Es preciso proporcionar este parámetro al crear un nuevo trabajo del Agente de instantáneas.

En el caso de los publicadores que no son de SQL Server, debe ser el mismo inicio de sesión especificado en sp_adddistpublisher (Transact-SQL).

[ @job_password = ] N'job_password'

Contraseña de la cuenta de Windows con la que se ejecuta el agente. @job_password es sysname, sin ningún valor predeterminado. Es preciso proporcionar este parámetro al crear un nuevo trabajo del Agente de instantáneas.

Importante

No almacene información de autenticación en archivos de script. Para ayudar a mejorar la seguridad, se recomienda proporcionar nombres de inicio de sesión y contraseñas en tiempo de ejecución.

[ @publisher = ] N'publisher'

Especifica un publicador que no es de SQL Server. @publisher es sysname, con un valor predeterminado de NULL.

@publisher no debe usarse al crear un Agente de instantáneas en un publicador de SQL Server.

[ @distributor_security_mode = ] distributor_security_mode

Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.

[ @distributor_login = ] N'distributor_login'

Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.

[ @distributor_password = ] N'distributor_password'

Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Comentarios

sp_addpublication_snapshot se usa en la replicación de instantáneas, la replicación transaccional y la replicación de mezcla.

Ejemplos

-- 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'AdventureWorks'; 
SET @publication = N'AdvWorksProductTran'; 
-- Windows account used to run the Log Reader and Snapshot Agents.
SET @login = $(Login); 
-- This should be passed at runtime.
SET @password = $(Password); 

-- Enable transactional or 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 use of Windows Integrated Authentication (default) 
    -- when connecting to the Publisher.
    @publisher_security_mode = 1;

-- Create a new transactional publication with the required properties. 
EXEC sp_addpublication 
    @publication = @publication, 
    @status = N'active',
    @allow_push = N'true',
    @allow_pull = N'true',
    @independent_agent = N'true';

-- Create a new snapshot job for the publication, using a default schedule.
EXEC sp_addpublication_snapshot 
    @publication = @publication, 
    @job_login = @login, 
    @job_password = @password,
    -- Explicitly specify the use of Windows Integrated Authentication (default) 
    -- when connecting to the Publisher.
    @publisher_security_mode = 1;
GO

Permisos

Solo los miembros del rol fijo de servidor sysadmin o db_owner rol fijo de base de datos pueden ejecutar sp_addpublication_snapshot.