Compartilhar via


sp_addpublication_snapshot (Transact-SQL)

Cria o Snapshot Agent para a publicação especificada. Esse procedimento armazenado é executado no Publicador, no banco de dados de publicação.

Observação sobre segurançaObservação sobre segurança

 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 Criptografando conexões com o SQL Server.

Ícone de vínculo de tópicoConvenções de 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 freqüência de execução do Snapshot Agent. 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 freqüência.

    64

    Quando o SQL Server Agent inicia.

    128

    Executar quando o computador estiver ocioso

  • [ @frequency_interval = ] frequency_interval
    É o valor a ser aplicado à freqüê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 do 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 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 Snapshot Agent. 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 Snapshot Agent, formatada 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, formatada como YYYYMMDD. 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 Snapshot Agent, 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 em que o Snapshot Agent deixa de ser agendado, formatada como HHMMSS. active_end_time_of_day é int, com um padrão de 235959, que significa 11:59:59 P.M. como medido em um relógio de 24 horas.

  • [ @snapshot_job_name = ] 'snapshot_agent_name'
    É o nome de um trabalho existente de Snapshot Agent se um trabalho existente estiver sendo usado. snapshot_agent_name é nvarchar(100) com um 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 se conectar 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 de 0 deve ser especificado para Publicadores não-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 do Windows especificada em job_login será usada na conexão com o Publicador.

  • [ @publisher_password= ] 'publisher_password'
    É a senha usada na conexão com o Publicador. publisher_password é sysname, com um padrão NULL.

    Observação sobre segurançaObservaçã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 login para a conta do Windows na qual o agente é executado. job_login é nvarchar(257), com um padrão NULL. Esta conta do Windows sempre é usada para conexões de agente com o Distribuidor. Você deve fornecer este parâmetro ao criar um novo trabalho do Snapshot Agent.

    ObservaçãoObservaçã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 para a conta do Windows na qual o agente é executado. job_password é sysname e tem um padrão de NULL. Você deve fornecer esse parâmetro ao criar um novo trabalho do Snapshot Agent. Se job_password for NULL e o usuário que cria o instantâneo for sysadmin, o parâmetro padronizará à conta sob a qual o SQL Server Agent executa.

    Observação sobre segurançaObservaçã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 não-SQL Server. publisher é sysname, com um padrão NULL.

    ObservaçãoObservação

    publisher não deveria ser usado ao criar um Snapshot Agent em um Editor 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.