sp_addpublication_snapshot (Transact-SQL)
Cria o Agente de Instantâneo para a publicação especificada. Esse procedimento armazenado é executado no Publicador, no banco de dados de publicação.
![]() |
---|
Quando um Publicador é configurado com um Distribuidor remoto, os valores fornecidos para todos os parâmetros, inclusive job_login e job_password, são enviados ao Distribuidor como texto sem-formatação. Você deve criptografar a conexão entre o Publicador e seu Distribuidor remoto antes de executar esse procedimento armazenado. Para obter mais informações, consulte Habilitar conexões criptografadas no Mecanismo de Banco de Dados (SQL Server Configuration Manager). |
Convenções da sintaxe Transact-SQL
Sintaxe
sp_addpublication_snapshot [ @publication= ] '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 = ] 'snapshot_agent_name' ]
[ , [ @publisher_security_mode = ] publisher_security_mode ]
[ , [ @publisher_login = ] 'publisher_login' ]
[ , [ @publisher_password = ] 'publisher_password' ]
[ , [ @job_login = ] 'job_login' ]
[ , [ @job_password = ] 'job_password' ]
[ , [ @publisher = ] 'publisher' ]
Argumentos
[ @publication=] 'publication'
É o nome da publicação. publication é sysname, sem padrão.[ @frequency_type = ] frequency_type
É a frequência de execução do Agente de Instantâneo. frequency_type é int e pode ser um dos valores a seguir.Valor
Descrição
1
Uma vez..
4 (padrão)
Diariamente.
8
Semanalmente.
16
Mensalmente.
32
Mensalmente, relativo ao intervalo de frequência.
64
Quando o SQL Server Agent inicia.
128
Executar quando o computador estiver ocioso
[ @frequency_interval = ] frequency_interval
É o valor a ser aplicado à frequência definida por frequency_type. frequency_interval é int e pode ser um dos valores a seguir.Valor de frequency_type
Efeito em frequency_interval
1
frequency_interval não é usado.
4 (padrão)
Todos os dias de frequency_interval, com um padrão de diariamente.
8
frequency_interval é um ou mais dos seguintes (combinado com um operador lógico | (OR bit a bit)):
1 = Domingo |
2 = Segunda-feira |
4 = Terça-feira |
8 = Quarta-feira |
16 = Quinta-feira |
32 = Sexta-feira |
64 = Sábado
16
No dia do mês do frequency_interval.
32
frequency_interval é um dos seguintes:
1 = Domingo |
2 = Segunda-feira |
3 = Terça-feira |
4 = Quarta-feira |
5 = Quinta-feira |
6 = Sexta-feira |
7 = Sábado |
8 = Dia |
9 = Dia da semana |
10 = Dia de fim de semana
64
frequency_interval não é usado.
128
frequency_interval não é usado.
[ @frequency_subday = ] frequency_subday
É a unidade de freq_subday_interval. frequency_subday é int e pode ter um destes valores.Valor
Descrição
1
Uma vez
2
Segundo
4 (padrão)
Minuto
8
Hora
[ @frequency_subday_interval = ] frequency_subday_interval
É o intervalo para frequency_subday. frequency_subday_interval é int, com um padrão de 5, que significa a cada 5 minutos.[ @frequency_relative_interval = ] frequency_relative_interval
É a data de execução do Agente de Instantâneo. frequency_relative_interval é int, com um padrão de 1.[ @frequency_recurrence_factor = ] frequency_recurrence_factor
É o fator de recorrência usado por frequency_type. frequency_recurrence_factor é int, com um padrão de 0.[ @active_start_date = ] active_start_date
É a data do primeiro agendamento do Agente de Instantâneo, formatada como AAAAMMDD. active_start_date é int, com um padrão de 0.[ @active_end_date = ] active_end_date
É a data em que o Agente de Instantâneo para de ser agendado, formatada como AAAAMMDD. active_end_date é int, com um padrão de 99991231, que significa 31 de dezembro de 9999.[ @active_start_time_of_day = ] active_start_time_of_day
É a hora do dia do primeiro agendamento do Agente de Instantâneo, formatada como HHMMSS. active_start_time_of_day é int, com um padrão de 0.[ @active_end_time_of_day = ] active_end_time_of_day
É a hora do dia do último agendamento do Agente de Instantâneo, formatada como HHMMSS. active_end_time_of_day é int, com um padrão de 235959, que indica 23h59min59s em um relógio de 24 horas.[ @snapshot_job_name = ] 'snapshot_agent_name'
É o nome de um trabalho existente do Agente de Instantâneo se um trabalho existente estiver sendo usado. snapshot_agent_name é nvarchar(100) com o valor padrão de NULL. Esse parâmetro é para uso interno e não deve ser especificado ao criar uma nova publicação. Se snapshot_agent_name for especificado, então job_login e job_password devem ser NULL.[ @publisher_security_mode = ] publisher_security_mode
É o modo de segurança usado pelo agente ao conectar-se ao Publicador. publisher_security_mode é smallint, com um padrão de 1. 0 especifica Autenticação do SQL Server e 1 especifica Autenticação do Windows. Um valor 0 deve ser especificado para Publicadores que não sejam do SQL Server. Quando possível, use a Autenticação do Windows.[ @publisher_login= ] 'publisher_login'
É o logon usado na conexão com o Publicador. publisher_login é sysname, com um padrão de NULL. publisher_login deve ser especificado quando publisher_security_mode é 0. Se publisher_login for NULL e publisher_security_mode for 1, então, a conta Windows especificada em job_login será usada na conexão com o Publicador.[ @publisher_password= ] 'publisher_password'
É a senha usada ao conectar-se ao Publicador. publisher_password é sysname, com um padrão de NULL.Observação sobre segurança
Não armazene informações de autenticação em arquivos de script. Para ajudar a melhorar a segurança, recomendamos que você forneça nomes de login e senhas em tempo de execução.
[ @job_login= ] 'job_login'
É o logon da conta do Windows na qual o agente é executado. job_login é nvarchar(257), com um padrão de NULL. Essa conta do Windows sempre é usada para conexões de agente com o Distribuidor. Você deve fornecer esse parâmetro ao criar um novo trabalho do Agente de Instantâneo.Observação
Para Publicadores não SQL Server, esse deve ser o mesmo logon especificado em sp_adddistpublisher (Transact-SQL).
[ @job_password= ] 'job_password'
É a senha da conta do Windows na qual o agente é executado. job_password é sysname, sem padrão. Você deve fornecer esse parâmetro ao criar um novo trabalho do Agente de Instantâneo.Observação sobre segurança
Não armazene informações de autenticação em arquivos de script. Para ajudar a melhorar a segurança, recomendamos que você forneça nomes de login e senhas em tempo de execução.
[ @publisher= ] 'publisher'
Especifica um Publicador que não é do SQL Server. publisher é sysname, com um padrão de NULL.Observação
publisher Não deveria ser usado ao criar um Agente de Instantâneo em um Publicador SQL Server.
Valores de código de retorno
0 (êxito) ou 1 (falha)
Comentários
sp_addpublication_snapshot é usado em replicação de instantâneo, replicação transacional e replicação de mesclagem.
Exemplo
-- 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
Permissões
Somente membros da função de servidor fixa sysadmin ou da função de banco de dados fixa db_owner podem executar sp_addpublication_snapshot.
Consulte também
Referência
sp_addpublication (Transact-SQL)
sp_changepublication_snapshot (Transact-SQL)
sp_startpublication_snapshot (Transact-SQL)
Procedimentos armazenados de replicação (Transact-SQL)