sys.sp_addpublication_snapshot (Transact-SQL)

gäller för:SQL ServerAzure SQL Managed Instance

Skapar Snapshot Agent för den angivna publikationen. Den här lagrade proceduren körs i Publisher i publikationsdatabasen.

Important

När en Publisher konfigureras med en fjärrdistributör skickas värdena för alla parametrar, inklusive @job_login och @job_password, till distributören som klartext. Du bör kryptera anslutningen mellan Utgivaren och dess fjärranslutna distributör innan du kör den här lagrade proceduren. Mer information finns i Konfigurera Databasmotor för SQL Server för kryptering av anslutningar.

Transact-SQL syntaxkonventioner

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

Namnet på publikationen. @publication är sysname, utan standard.

[ @frequency_type = ] frequency_type

Frekvensen med vilken Snapshot Agent körs. @frequency_type är int, och kan vara ett av följande värden.

Value Description
1 En gång
4 (standardinställning) Daglig
8 En gång i veckan
16 Monthly
32 Månadsvis, relativt frekvensintervallet
64 När SQL Server Agent startar
128 Kör när datorn är inaktiv

[ @frequency_interval = ] frequency_interval

Värdet som gäller för frekvensen som sätts av @frequency_type. @frequency_interval är int, och kan vara ett av följande värden.

Värdet av frequency_type Effekt på frequency_interval
1 @frequency_interval används inte.
4 (standardinställning) Var @frequency_interval dag, med standarden dagligen.
8 @frequency_interval är en eller flera av följande (kombinerat med en | (Bitwise OR) Logisk operator):

1 = Söndag |

2 = Måndag |

4 = Tisdag |

8 = Onsdag |

16 = Torsdag |

32 = Fredag |

64 = Lördag
16 På den @frequency_interval dagen i månaden.
32 @frequency_interval är ett av följande värden:

1 = Söndag |

2 = Måndag |

3 = Tisdag |

4 = Onsdag |

5 = Torsdag |

6 = Fredag |

7 = Lördag |

8 = Dag |

9 = Vardag |

10 = Helgdag
64 @frequency_interval används inte.
128 @frequency_interval används inte.

[ @frequency_subday = ] frequency_subday

Enheten för freq_subday_interval. @frequency_subday är int, och kan vara ett av dessa värden.

Value Description
1 En gång
2 Second
4 (standardinställning) Minut
8 Timme

[ @frequency_subday_interval = ] frequency_subday_interval

Pausen för @frequency_subday, om minuter. @frequency_subday_interval är int, med standardvärdet .5

[ @frequency_relative_interval = ] frequency_relative_interval

Datumet då Snapshot Agent körs. @frequency_relative_interval är int, med standardvärdet .1

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

Upprepningsfaktorn som används av @frequency_type. @frequency_recurrence_factor är int, med standardvärdet .0

[ @active_start_date = ] active_start_date

Datumet då Snapshot Agent först schemaläggs och formateras som yyyyMMdd. @active_start_date är int, med standardvärdet .0

[ @active_end_date = ] active_end_date

Datumet då Snapshot Agent slutar schemalagas, formaterat som yyyyMMdd. @active_end_date är int, med en betalningsinställelse på 99991231, vilket betyder 31 december 9999.

[ @active_start_time_of_day = ] active_start_time_of_day

Den tid på dagen då Snapshot Agent först schemaläggs och formateras som HHmmss. @active_start_time_of_day är int, med standardvärdet .0

[ @active_end_time_of_day = ] active_end_time_of_day

Den tid på dagen då Snapshot Agent slutar schemaläggas och formateras som HHmmss. @active_end_time_of_day är int, med en standard på 235959, vilket betyder 23:59:59 enligt en 24-timmarsklocka.

[ @snapshot_job_name = ] N'snapshot_job_name'

Namnet på ett befintligt Snapshot Agent-jobb om ett befintligt jobb används. @snapshot_job_name är nvarchar(100), med en standard på NULL. Denna parameter är för internt bruk och bör inte specificeras vid skapandet av en ny publikation. Om @snapshot_agent_name anges måste @job_login och @job_password vara NULL.

[ @publisher_security_mode = ] publisher_security_mode

Note

Microsoft Entra ID kallades tidigare Azure Active Directory (Azure AD).

Det är säkerhetsläget som agenten använder när de ansluter till Publisher. @publisher_security_mode är int, med standardvärdet .1 Ett värde på 0 måste anges för icke-SQL Server Publishers. Om möjligt använder du Windows-autentisering.. Följande värden definierar säkerhetsläget:

  • 0 specificerar autentisering av SQL Server.
  • 1 specificerar Windows-autentisering.
  • 2specificerar autentisering av Microsoft Entra-lösenord, med start från SQL Server 2022 (16.x) CU 6.
  • 3specificerar Microsoft Entra integrerad autentisering, med start från SQL Server 2022 (16.x) CU 6.
  • 4specificerar Microsoft Entra-tokenautentisering, med start från SQL Server 2022 (16.x) CU 6.

[ @publisher_login = ] N'publisher_login'

Inloggningen som används vid anslutning till Publisher. @publisher_login är sysname, med standardvärdet .NULL @publisher_login måste specificeras när @publisher_security_mode är 0. Om @publisher_login är NULL och @publisher_security_mode är 1, används kontot som anges i @job_login när man ansluter till Publisher.

[ @publisher_password = ] N'publisher_password'

Lösenordet som används vid anslutning till utgivaren. @publisher_password är sysname, med standardvärdet .NULL

Important

Spara inte autentiseringsinformation i skriptfiler. För att förbättra säkerheten rekommenderar vi att du anger inloggningsnamn och lösenord vid körning.

[ @job_login = ] N'job_login'

Inloggningen för kontot som agenten körs under. På Azure SQL Managed Instance, använd ett SQL Server-konto. @job_login är nvarchar(257), med en standard på NULL. Detta konto används alltid för agentkopplingar till distributören. Du måste ange denna parameter när du skapar ett nytt Snapshot Agent-jobb.

För icke-SQL Server utgivare måste detta vara samma inloggning som anges i sp_adddistpublisher.

[ @job_password = ] N'job_password'

Lösenordet till Windows-kontot som agenten körs under. @job_password är sysname, utan standard. Du måste ange denna parameter när du skapar ett nytt Snapshot Agent-jobb.

Important

Spara inte autentiseringsinformation i skriptfiler. För att förbättra säkerheten rekommenderar vi att du anger inloggningsnamn och lösenord vid körning.

[ @publisher = ] N'publisher'

Specificerar en icke-SQL Server Publisher. @publisher är sysname, med standardvärdet .NULL

@publisher bör inte användas när man skapar en Snapshot Agent på en SQL Server Publisher.

[ @distributor_security_mode = ] distributor_security_mode

Identifieras endast i informationssyfte. Stöds ej. Framtida kompatibilitet garanteras inte.

[ @distributor_login = ] N'distributor_login'

Identifieras endast i informationssyfte. Stöds ej. Framtida kompatibilitet garanteras inte.

[ @distributor_password = ] N'distributor_password'

Identifieras endast i informationssyfte. Stöds ej. Framtida kompatibilitet garanteras inte.

[ @job_security_mode = ] job_security_mode

Identifieras endast i informationssyfte. Stöds ej. Framtida kompatibilitet garanteras inte.

Returnera kodvärden

0 (lyckades) eller 1 (fel).

Remarks

sp_addpublication_snapshot används i replikering av ögonblicksbilder, transaktionsreplikering och sammanslagningsreplikering.

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

Endast medlemmar av sysadmin-fasta serverrollen eller db_owner fasta databasrollen kan köra sp_addpublication_snapshot.