sys.sp_addpublication_snapshot (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL Managed Instance

Maakt de Snapshot Agent aan voor de gespecificeerde publicatie. Deze opgeslagen procedure wordt uitgevoerd bij Publisher in de publicatiedatabase.

Important

Bij het configureren van een Publisher met een externe Distributor worden de waarden die voor alle parameters, inclusief @job_login en @job_password, als platte tekst naar de Distributor gestuurd. Versleutel de verbinding tussen publisher en de externe distributeur voordat u deze opgeslagen procedure uitvoert. Zie SQL Server Database Engine configureren voor het versleutelen van verbindingenvoor meer informatie.

Transact-SQL syntaxis-conventies

Syntax

sys.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' ]
    [ , [ @job_security_mode = ] job_security_mode ]
[ ; ]

Arguments

[ @publication = ] N'publicatie'

De naam van de publicatie. @publication is sysname, zonder standaard.

[ @frequency_type = ] frequency_type

De frequentie waarmee de Snapshot Agent wordt uitgevoerd. @frequency_type is int, en kan een van de volgende waarden zijn.

Value Description
1 Eenmaal
4 (standaard) Dagelijks
8 Wekelijks
16 Maandelijks
32 Maandelijks, relatief tot het frequentieinterval
64 Wanneer de SQL Server Agent start
128 Start wanneer de computer inactief is

[ @frequency_interval = ] frequency_interval

De waarde die moet worden toegepast op de frequentie die door @frequency_type wordt ingesteld. @frequency_interval is int, en kan een van de volgende waarden zijn.

Waarde van frequency_type Effect op frequency_interval
1 @frequency_interval wordt niet gebruikt.
4 (standaard) Elke @frequency_interval dagen, met als standaard dagelijks.
8 @frequency_interval is een of meer van de volgende (gecombineerd met een | (Bitwise OK) Logische operator):

1 = Zondag |

2 = Maandag |

4 = Dinsdag |

8 = Woensdag |

16 = Donderdag |

32 = Vrijdag |

64 = Zaterdag
16 Op de @frequency_interval dag van de maand.
32 @frequency_interval is een van de volgende waarden:

1 = Zondag |

2 = Maandag |

3 = Dinsdag |

4 = Woensdag |

5 = Donderdag |

6 = Vrijdag |

7 = Zaterdag |

8 = Dag |

9 = Doordeweekse dag |

10 = Weekenddag
64 @frequency_interval wordt niet gebruikt.
128 @frequency_interval wordt niet gebruikt.

[ @frequency_subday = ] frequency_subday

De eenheid voor freq_subday_interval. @frequency_subday is int, en kan een van deze waarden zijn.

Value Description
1 Eenmaal
2 Second
4 (standaard) Minuut
8 Uur

[ @frequency_subday_interval = ] frequency_subday_interval

De pauze voor @frequency_subday, over minuten. @frequency_subday_interval is int, met als standaard .5

[ @frequency_relative_interval = ] frequency_relative_interval

De datum waarop de Snapshot Agent draait. @frequency_relative_interval is int, met een standaard van 1.

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

De door @frequency_type gebruikte recurrence factor @frequency_recurrence_factor is int, met als standaard .0

[ @active_start_date = ] active_start_date

De datum waarop de Snapshot Agent voor het eerst wordt gepland, geformatteerd als yyyyMMdd. @active_start_date is int, met een standaard van 0.

[ @active_end_date = ] active_end_date

De datum waarop de Snapshot Agent stopt met het inplannen zijn, geformatteerd als yyyyMMdd. @active_end_date is int, met een wanbetaling van 99991231, wat betekent 31 december 9999.

[ @active_start_time_of_day = ] active_start_time_of_day

Het tijdstip waarop de Snapshot Agent voor het eerst wordt gepland, geformatteerd als HHmmss. @active_start_time_of_day is int, met als standaard .0

[ @active_end_time_of_day = ] active_end_time_of_day

Het tijdstip waarop de Snapshot Agent stopt met het inplannen zijn, geformatteerd als HHmmss. @active_end_time_of_day is int, met een standaard van 235959, wat betekent 23:59:59 uur, gemeten op een 24-uurs klok.

[ @snapshot_job_name = ] N'snapshot_job_name'

De naam van een bestaande Snapshot Agent-functienaam als een bestaande taak wordt gebruikt. @snapshot_job_name is nvarchar(100), met een standaard van NULL. Deze parameter is voor intern gebruik en mag niet worden gespecificeerd bij het aanmaken van een nieuwe publicatie. Als @snapshot_agent_name is gespecificeerd, dan moeten @job_login en @job_password zijn NULL.

[ @publisher_security_mode = ] publisher_security_mode

Note

Microsoft Entra ID werd voorheen Azure Active Directory (Azure AD) genoemd.

De beveiligingsmodus die de agent gebruikt bij het verbinden met de Publisher. @publisher_security_mode is int, met als standaard .1 Er moet een waarde van 0 worden gespecificeerd voor niet-SQL Server Publishers. Gebruik waar mogelijk Windows-verificatie. De volgende waarden definiëren de beveiligingsmodus:

  • 0 specificeert SQL Server-authenticatie.
  • 1 specificeert Windows-authenticatie.
  • 2specificeert Microsoft Entra-wachtwoordauthenticatie, beginnend met SQL Server 2022 (16.x) CU 6.
  • 3specificeert Microsoft Entra geïntegreerde authenticatie, beginnend met SQL Server 2022 (16.x) CU 6.
  • 4specificeert Microsoft Entra tokenauthenticatie, beginnend met SQL Server 2022 (16.x) CU 6.

[ @publisher_login = ] N'publisher_login'

De login die wordt gebruikt bij het verbinden met de Publisher. @publisher_login is een systeemnaam, met als standaard .NULL @publisher_login moet worden gespecificeerd wanneer @publisher_security_mode is 0. Als @publisher_login is NULL en @publisher_security_mode is 1, dan wordt het account dat in @job_login is vermeld gebruikt bij het verbinden met de Publisher.

[ @publisher_password = ] N'publisher_password'

Het wachtwoord dat wordt gebruikt bij het verbinden met de uitgever. @publisher_password is een systeemnaam, met als standaard NULL.

Important

Sla authenticatiegegevens niet op in scriptbestanden. Om de beveiliging te verbeteren, raden we aan om tijdens de uitvoering inlognamen en wachtwoorden op te geven.

[ @job_login = ] N'job_login'

De login voor het account waaronder de agent werkt. Op Azure SQL Managed Instance gebruik je een SQL Server-account. @job_login is nvarchar(257), met een standaard van NULL. Dit account wordt altijd gebruikt voor agentverbindingen met de distributeur. Je moet deze parameter invoeren bij het aanmaken van een nieuwe Snapshot Agent-taak.

Voor niet-SQL Server uitgevers moet dit dezelfde login zijn die in sp_adddistpublisher wordt gespecificeerd.

[ @job_password = ] N'job_password'

Het wachtwoord voor het Windows-account waaronder de agent draait. @job_password is sysname, zonder standaard. Je moet deze parameter invoeren bij het aanmaken van een nieuwe Snapshot Agent-taak.

Important

Sla authenticatiegegevens niet op in scriptbestanden. Om de beveiliging te verbeteren, raden we aan om tijdens de uitvoering inlognamen en wachtwoorden op te geven.

[ @publisher = ] N'uitgever'

Specificeert een niet-SQL Server Publisher. @publisher is sysname, met als standaard NULL.

@publisher mag niet gebruikt worden bij het aanmaken van een Snapshot Agent op een SQL Server Publisher.

[ @distributor_security_mode = ] distributor_security_mode

Alleen ter informatie geïdentificeerd. Wordt niet ondersteund. Toekomstige compatibiliteit is niet gegarandeerd.

[ @distributor_login = ] N'distributor_login'

Alleen ter informatie geïdentificeerd. Wordt niet ondersteund. Toekomstige compatibiliteit is niet gegarandeerd.

[ @distributor_password = ] N'distributor_password'

Alleen ter informatie geïdentificeerd. Wordt niet ondersteund. Toekomstige compatibiliteit is niet gegarandeerd.

[ @job_security_mode = ] job_security_mode

Alleen ter informatie geïdentificeerd. Wordt niet ondersteund. Toekomstige compatibiliteit is niet gegarandeerd.

Codewaarden retourneren

0 (geslaagd) of 1 (mislukt).

Remarks

sp_addpublication_snapshot wordt gebruikt in momentopnamereplicatie, transactionele replicatie en samenvoegingsreplicatie.

Examples

-- 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

Permissions

Alleen leden van de sysadmin-vaste serverrol of db_owner vaste databaserol kunnen uitvoeren sp_addpublication_snapshot.