Partilhar via


sp_addpublication_snapshot (Transact-SQL)

Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure

Cria o Agente de Instantâneo para a publicação especificada. Esse procedimento armazenado é executado no Publicador, no banco de dados publicador.

Importante

Ao configurar um Publicador com um Distribuidor remoto, os valores fornecidos para todos os parâmetros, incluindo @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, confira Configurar o Mecanismo de Banco de Dados do SQL Server para criptografia de conexões.

Convenções de sintaxe de Transact-SQL

Sintaxe

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'publicação'

O nome da publicação. @publication é sysname, sem padrão.

@frequency_type [ = ] frequency_type

A frequência com que o Snapshot Agent é executado. @frequency_type é int e pode ser um dos seguintes valores.

Valor Descrição
1 Uma vez
4 (padrão) Diário
8 Semanal
16 Mensal
32 Mensalmente, relativo ao intervalo de frequência
64 Quando o SQL Server Agent é iniciado
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 seguintes valores.

Valor de frequency_type Efeito em frequency_interval
1 @frequency_interval não é usado.
4 (padrão) A cada @frequency_interval dias, com um padrão de diário.
8 @frequency_interval é um ou mais dos seguintes (combinados com um | (OU bit a bit) operador lógico):

1 = Domingo |

2 = Segunda-feira |

4 = Terça-feira |

8 = Quarta-feira |

16 = Quinta-feira |

32 = Sexta-feira |

64 = Sábado
16 No @frequency_interval dia do mês.
32 @frequency_interval é um dos seguintes valores:

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 para freq_subday_interval. @frequency_subday é int e pode ser um desses valores.

Valor Descrição
1 Uma vez
2 Second
4 (padrão) Minuto
8 Hora

@frequency_subday_interval [ = ] frequency_subday_interval

O intervalo para frequency_subday, em minutos. @frequency_subday_interval é int, com um padrão de 5.

@frequency_relative_interval [ = ] frequency_relative_interval

A data em que o Snapshot Agent é executado. @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 em que o Snapshot Agent é agendado pela primeira vez, formatado como yyyyMMdd. @active_start_date é int, com um padrão de 0.

@active_end_date [ = ] active_end_date

A data em que o Snapshot Agent deixa de ser agendado, formatado como yyyyMMdd. @active_end_date é int, com um padrão de ,o que significa 31 de dezembro de 999912319999.

@active_start_time_of_day [ = ] active_start_time_of_day

A hora do dia em que o Snapshot Agent é agendado pela primeira vez, formatado 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 em que o Snapshot Agent deixa de ser agendado, formatado como HHmmss. @active_end_time_of_day é int, com um padrão de 235959, o que significa 23:59:59

@snapshot_job_name [ = ] N'snapshot_job_name'

O nome de um nome de trabalho existente do Snapshot Agent se um trabalho existente estiver sendo usado. @snapshot_job_name é nvarchar(100), com um 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, @job_login e @job_password devem ser NULL.

@publisher_security_mode [ = ] publisher_security_mode

Observação

O Microsoft Entra ID era conhecido como Azure Active Directory (Azure AD).

O modo de segurança usado pelo agente ao se conectar ao Publicador. @publisher_security_mode é int, com um padrão de 1. Um valor de 0 deve ser especificado para Publicadores não-SQL Server. Quando possível, use a autenticação do Windows.. Os seguintes valores definem o modo de segurança:

  • 0 especifica a autenticação do SQL Server.
  • 1 especifica a autenticação do Windows.
  • 2 especifica a autenticação de senha do Microsoft Entra, começando com SQL Server 2022 (16.x) 6.
  • 3 especifica a autenticação integrada do Microsoft Entra, começando com SQL Server 2022 (16.x) 6.
  • 4 especifica a autenticação de token do Microsoft Entra, começando com SQL Server 2022 (16.x) 6.

@publisher_login [ = ] N'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, a conta especificada em @job_login será usada ao se conectar ao Publicador.

@publisher_password [ = ] N'publisher_password'

A senha usada ao se conectar ao Publicador. @publisher_password é sysname, com um padrão de NULL.

Importante

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 [ = ] N'job_login'

O logon da conta na qual o agente é executado. Na Instância Gerenciada de SQL do Azure, use uma conta do SQL Server. @job_login é nvarchar(257), com um padrão de NULL. Essa conta é 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.

Para Publicadores não SQL Server, esse deve ser o mesmo logon especificado em sp_adddistpublisher.

@job_password [ = ] N'job_password'

A senha da conta do Windows sob a 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.

Importante

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 [ = ] N'editor'

Especifica um Publicador não-SQL Server. @publisher é sysname, com um padrão de NULL.

@publisher não deve ser usado ao criar um Snapshot Agent em um Publicador do SQL Server.

@distributor_security_mode [ = ] distributor_security_mode

Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.

@distributor_login [ = ] N'distributor_login'

Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.

@distributor_password [ = ] N'distributor_password'

Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Comentários

sp_addpublication_snapshot é usado na replicação de instantâneo, replicação transacional e replicação de mesclagem.

Exemplos

-- 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 db_owner função de banco de dados fixa podem executar sp_addpublication_snapshot.