sp_addpublication_snapshot (Transact-SQL)

Gilt für:SQL ServerAzure SQL Managed Instance

Erstellt den Momentaufnahme-Agent für die angegebene Veröffentlichung. Diese gespeicherte Prozedur wird im Publisher in der Publikationsdatenbank ausgeführt.

Wichtig

Beim Konfigurieren eines Verlegers mit einem Remoteverteiler werden die Werte, die für alle Parameter, einschließlich job_login und job_password, bereitgestellt werden, als Nur-Text an den Verteiler gesendet. Sie sollten die Verbindung zwischen dem Verleger und dem zugehörigen Remoteverteiler verschlüsseln, bevor Sie diese gespeicherte Prozedur ausführen. Weitere Informationen finden Sie unter Konfigurieren der SQL Server-Datenbank-Engine zum Verschlüsseln von Verbindungen.

Transact-SQL-Syntaxkonventionen

Syntax

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' ]
[ ; ]

Argumente

[ @publication = ] N'Publikation'

Der Name der Veröffentlichung. @publication ist "sysname" ohne Standard.

[ @frequency_type = ] frequency_type

Die Häufigkeit, mit der die Momentaufnahmen-Agent ausgeführt wird. @frequency_type ist int und kann einer der folgenden Werte sein:

Wert Beschreibung
1 Einmal
4 (Standard) Täglich
8 Wöchentlich
16 Monatlich
32 Monatlich, relativ zum Häufigkeitsintervall
64 Wenn SQL Server-Agent gestartet wird
128 Ausführen, wenn sich der Computer im Leerlauf befindet

[ @frequency_interval = ] frequency_interval

Der Wert, der auf die von @frequency_type festgelegte Häufigkeit angewendet werden soll. @frequency_interval ist int und kann einer der folgenden Werte sein:

Wert für frequency_type Auswirkung auf frequency_interval
1 @frequency_interval ist nicht verwendet.
4 (Standard) Alle @frequency_interval Tage mit einer Standardeinstellung für täglich.
8 @frequency_interval ist eine oder mehrere der folgenden Elemente (kombiniert mit einem | (Bitweise ODER) logischer Operator):

1 = Sonntag |

2 = Montag |

4 = Dienstag |

8 = Mittwoch |

16 = Donnerstag |

32 = Freitag |

64 = Samstag
16 Am @frequency_interval Tag des Monats.
32 @frequency_interval ist einer der folgenden Werte:

1 = Sonntag |

2 = Montag |

3 = Dienstag |

4 = Mittwoch |

5 = Donnerstag |

6 = Freitag |

7 = Samstag |

8 = Tag |

9 = Wochentag |

10 = Wochenendtag
64 @frequency_interval ist nicht verwendet.
128 @frequency_interval ist nicht verwendet.

[ @frequency_subday = ] frequency_subday

Die Einheit für freq_subday_interval. @frequency_subday ist int und kann einer dieser Werte sein.

Wert Beschreibung
1 Einmal
2 Second
4 (Standard) Minute
8 Hour

[ @frequency_subday_interval = ] frequency_subday_interval

Das Intervall für frequency_subday in Minuten. @frequency_subday_interval ist int, mit einem Standardwert von 5.

[ @frequency_relative_interval = ] frequency_relative_interval

Das Datum, an dem die Momentaufnahmen-Agent ausgeführt wird. @frequency_relative_interval ist int, mit einem Standardwert von 1.

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

Der von frequency_type verwendete Serienfaktor. @frequency_recurrence_factor ist int mit einem Standardwert von 0.

[ @active_start_date = ] active_start_date

Das Datum, an dem die Momentaufnahmen-Agent zum ersten Mal geplant ist, formatiert als yyyyMMdd. @active_start_date ist int, mit einem Standardwert von 0.

[ @active_end_date = ] active_end_date

Das Datum, an dem die Momentaufnahmen-Agent nicht mehr geplant wird, formatiert als yyyyMMdd. @active_end_date ist "int" mit der Standardeinstellung "99991231,was bedeutet, dass 31. Dezember 9999.

[ @active_start_time_of_day = ] active_start_time_of_day

Die Tageszeit, zu der die Momentaufnahmen-Agent zum ersten Mal geplant ist, formatiert als HHmmss. @active_start_time_of_day ist int mit einem Standardwert von 0.

[ @active_end_time_of_day = ] active_end_time_of_day

Die Tageszeit, zu der die Momentaufnahmen-Agent nicht mehr geplant wird, formatiert als HHmmss. @active_end_time_of_day ist int, mit einem Standardwert von 235959, was bedeutet 11:59:59:59 P.M. gemessen auf einer 24-Stunden-Uhr.

[ @snapshot_job_name = ] N'Momentaufnahme_job_name'

Der Name eines vorhandenen Momentaufnahmen-Agent Auftragsnamens, wenn ein vorhandener Auftrag verwendet wird. @Momentaufnahme_job_name ist nvarchar(100), mit einem Standardwert von NULL. Dieser Parameter dient zur internen Verwendung und sollte beim Erstellen einer neuen Publikation nicht angegeben werden. Wenn @Momentaufnahme_agent_name angegeben ist, müssen @job_login und @job_password seinNULL.

[ @publisher_security_mode = ] publisher_security_mode

Hinweis

Microsoft Entra-ID wurde zuvor als Azure Active Directory (Azure AD) bezeichnet.

Der vom Agent beim Herstellen einer Verbindung mit dem Publisher verwendete Sicherheitsmodus. @publisher_security_mode ist int, mit einem Standardwert von 1. Für Nicht-SQL Server-Herausgeber muss ein Wert 0 angegeben werden. Verwenden Sie nach Möglichkeit die Windows-Authentifizierung.. Die folgenden Werte definieren den Sicherheitsmodus:

  • 0 Gibt die SQL Server-Authentifizierung an.
  • 1gibt Windows-Authentifizierung an.
  • 2 Gibt die Microsoft Entra-Kennwortauthentifizierung ab SQL Server 2022 (16.x) CU 6 an.
  • 3 Gibt die integrierte Microsoft Entra-Authentifizierung ab SQL Server 2022 (16.x) CU 6 an.
  • 4 Gibt die Microsoft Entra-Tokenauthentifizierung ab SQL Server 2022 (16.x) CU 6 an.

[ @publisher_login = ] N'publisher_login'

Der Anmeldename, der beim Herstellen einer Verbindung mit dem Verleger verwendet wird @publisher_login ist "sysname" mit einem Standardwert von NULL. @publisher_login muss angegeben werden, wenn @publisher_security_mode ist0. Wenn @publisher_login ist NULL und @publisher_security_mode ist 1, wird das in @job_login angegebene Konto beim Herstellen einer Verbindung mit dem Publisher verwendet.

[ @publisher_password = ] N'publisher_password'

Das Kennwort, das beim Herstellen einer Verbindung mit dem Publisher verwendet wird. @publisher_password ist "sysname" mit einem Standardwert von NULL.

Wichtig

Speichern Sie keine Authentifizierungsinformationen in Skriptdateien. Es wird empfohlen, Anmeldenamen und Kennwörter zur Laufzeit bereitzustellen, um die Sicherheit zu verbessern.

[ @job_login = ] N'job_login'

Die Anmeldung für das Konto, unter dem der Agent ausgeführt wird. Verwenden Sie in Azure SQL verwaltete Instanz ein SQL Server-Konto. @job_login ist nvarchar(257), mit einem Standardwert von NULL. Dieses Konto wird immer für Agentverbindungen mit dem Distributor verwendet. Sie müssen diesen Parameter angeben, wenn Sie einen neuen Auftrag des Momentaufnahme-Agents erstellen.

Bei Nicht-SQL Server-Herausgebern muss dies dieselbe Anmeldung sein, die in sp_adddistpublisher (Transact-SQL) angegeben ist.

[ @job_password = ] N'job_password'

Das Kennwort für das Windows-Konto, unter dem der Agent ausgeführt wird. @job_password ist "sysname" ohne Standard. Sie müssen diesen Parameter angeben, wenn Sie einen neuen Auftrag des Momentaufnahme-Agents erstellen.

Wichtig

Speichern Sie keine Authentifizierungsinformationen in Skriptdateien. Es wird empfohlen, Anmeldenamen und Kennwörter zur Laufzeit bereitzustellen, um die Sicherheit zu verbessern.

[ @publisher = ] N'publisher'

Gibt einen Nicht-SQL Server-Herausgeber an. @publisher ist "sysname" mit der Standardeinstellung "NULL.

@publisher sollte beim Erstellen einer Momentaufnahmen-Agent bei einem SQL Server Publisher nicht verwendet werden.

[ @distributor_security_mode = ] distributor_security_mode

Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.

[ @distributor_login = ] N'distributor_login'

Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.

[ @distributor_password = ] N'distributor_password'

Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Hinweise

sp_addpublication_snapshotwird in Momentaufnahme Replikation, Transaktionsreplikation und Zusammenführungsreplikation verwendet.

Beispiele

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

Berechtigungen

Nur Mitglieder der festen Serverrolle sysadmin oder db_owner feste Datenbankrolle können ausgeführt werden sp_addpublication_snapshot.