Partage via


sp_addpublication_snapshot (Transact-SQL)

S’applique à : SQL Server Azure SQL Managed Instance

Crée l'Agent d'instantané pour la publication spécifiée. Cette procédure stockée est exécutée sur le serveur de publication dans la base de données de publication.

Important

Lors de la configuration d'un serveur de publication avec un serveur de distribution distant, les valeurs fournies pour tous les paramètres, y compris job_login et job_password, sont envoyées en texte brut au serveur de distribution. Vous devez chiffrer la connexion entre le serveur de publication et son serveur de distribution distant avant d'exécuter cette procédure stockée. Pour plus d’informations, consultez Configurer le moteur de base de données SQL Server pour le chiffrement des connexions.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

[ @publication = ] N’publication'

Nom de la publication. @publication est sysname, sans valeur par défaut.

[ @frequency_type = ] frequency_type

Fréquence à laquelle l’Agent d’instantané est exécuté. @frequency_type est int et peut être l’une des valeurs suivantes.

Valeur Description
1 Une fois
4 (valeur par défaut) Quotidiennement
8 Hebdomadaire
16 Mensuelle
32 Mensuellement, en fonction de l'intervalle de fréquence
64 Quand SQL Server Agent démarre
128 Exécution pendant une période d'inactivité de l'ordinateur.

[ @frequency_interval = ] frequency_interval

Valeur à appliquer à la fréquence définie par @frequency_type. @frequency_interval est int et peut être l’une des valeurs suivantes.

Valeur de frequency_type Effet sur frequency_interval
1 @frequency_interval n’est pas utilisé.
4 (valeur par défaut) Tous les @frequency_interval jours, avec une valeur par défaut quotidienne.
8 @frequency_interval est un ou plusieurs des éléments suivants (combinés à un | (OR au niveau du bit) opérateur logique) :

1 = Dimanche |

2 = Lundi |

4 = Mardi |

8 = Mercredi |

16 = jeudi |

32 = vendredi |

64 = Samedi
16 Le @frequency_interval jour du mois.
32 @frequency_interval est l’une des valeurs suivantes :

1 = Dimanche |

2 = Lundi |

3 = Mardi |

4 = Mercredi |

5 = jeudi |

6 = vendredi |

7 = Samedi |

8 = Jour |

9 = Jour de la semaine |

10 = Jour du week-end
64 @frequency_interval n’est pas utilisé.
128 @frequency_interval n’est pas utilisé.

[ @frequency_subday = ] frequency_subday

Unité de freq_subday_interval. @frequency_subday est int et peut être l’une de ces valeurs.

Valeur Description
1 Une fois
2 Second
4 (valeur par défaut) Minute
8 Heure

[ @frequency_subday_interval = ] frequency_subday_interval

Intervalle de frequency_subday, en minutes. @frequency_subday_interval est int, avec la valeur par défaut 5.

[ @frequency_relative_interval = ] frequency_relative_interval

Date à laquelle l’Agent d’instantané s’exécute. @frequency_relative_interval est int, avec la valeur par défaut 1.

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

Facteur de périodicité utilisé par frequency_type. @frequency_recurrence_factor est int, avec la valeur par défaut 0.

[ @active_start_date = ] active_start_date

Date à laquelle l’Agent d’instantané est planifié pour la première fois, mis en forme en tant que yyyyMMdd. @active_start_date est int, avec une valeur par défaut de 0.

[ @active_end_date = ] active_end_date

Date à laquelle l’Agent d’instantané cesse d’être planifié, mis en forme en tant que yyyyMMdd. @active_end_date est int, avec une valeur par défaut , 99991231ce qui signifie le 31 décembre 9999.

[ @active_start_time_of_day = ] active_start_time_of_day

Heure du jour où l’Agent d’instantané est planifié pour la première fois, mis en forme comme HHmmsssuit : @active_start_time_of_day est int, avec la valeur par défaut 0.

[ @active_end_time_of_day = ] active_end_time_of_day

Heure du jour où l’Agent d’instantané cesse d’être planifié, mis en forme en tant que HHmmss. @active_end_time_of_day est int, avec une valeur par défaut , 235959ce qui signifie 11:59:59 P.M. comme mesuré sur une horloge de 24 heures.

[ @snapshot_job_name = ] N’snapshot_job_name'

Nom d’un nom de travail de l’Agent d’instantané existant si un travail existant est utilisé. @snapshot_job_name est nvarchar(100), avec la valeur par défaut NULL. Ce paramètre est destiné à une utilisation interne et ne doit pas être spécifié lors de la création d’une publication. Si @snapshot_agent_name est spécifié, @job_login et @job_password doivent être NULL.

[ @publisher_security_mode = ] publisher_security_mode

Remarque

Microsoft Entra ID était précédemment connu sous le nom d’Azure Active Directory (Azure AD).

Mode de sécurité utilisé par l’agent lors de la connexion au serveur de publication. @publisher_security_mode est int, avec une valeur par défaut de 1. Une valeur de 0 doit être spécifiée pour les serveurs de publication non-SQL Server. Lorsque c'est possible, utilisez l'authentification Windows.. Les valeurs suivantes définissent le mode de sécurité :

  • 0 spécifie l’authentification SQL Server.
  • 1spécifie Authentification Windows.
  • 2 spécifie l’authentification par mot de passe Microsoft Entra, à partir de SQL Server 2022 (16.x) CU 6.
  • 3 spécifie l’authentification intégrée Microsoft Entra, à compter de SQL Server 2022 (16.x) CU 6.
  • 4 spécifie l’authentification par jeton Microsoft Entra, à partir de SQL Server 2022 (16.x) CU 6.

[ @publisher_login = ] N’publisher_login'

Connexion utilisée lors de la connexion au serveur de publication. @publisher_login est sysname, avec la valeur par défaut NULL. @publisher_login doit être spécifié lorsque @publisher_security_mode est 0. Si @publisher_login est NULL et @publisher_security_mode est 1, le compte spécifié dans @job_login est utilisé lors de la connexion au serveur de publication.

[ @publisher_password = ] N’publisher_password'

Mot de passe utilisé lors de la connexion au serveur de publication. @publisher_password est sysname, avec la valeur par défaut NULL.

Important

Ne stockez pas les informations d’authentification dans les fichiers de script. Pour améliorer la sécurité, nous vous recommandons de fournir les noms de connexion et les mots de passe au moment de l'exécution.

[ @job_login = ] N’job_login'

Connexion du compte sous lequel l’agent s’exécute. Sur Azure SQL Managed Instance, utilisez un compte SQL Server. @job_login est nvarchar(257), avec la valeur par défaut NULL. Ce compte est toujours utilisé pour les connexions d’agent au serveur de distribution. Vous devez fournir ce paramètre lorsque vous créez un nouveau travail d'Agent d'instantané.

Pour les serveurs de publication non-SQL Server, il doit s’agir de la même connexion spécifiée dans sp_adddistpublisher (Transact-SQL).

[ @job_password = ] N’job_password'

Mot de passe du compte Windows sous lequel l’agent s’exécute. @job_password est sysname, sans valeur par défaut. Vous devez fournir ce paramètre lorsque vous créez un nouveau travail d'Agent d'instantané.

Important

Ne stockez pas les informations d’authentification dans les fichiers de script. Pour améliorer la sécurité, nous vous recommandons de fournir les noms de connexion et les mots de passe au moment de l'exécution.

[ @publisher = ] N’publisher'

Spécifie un serveur de publication non-SQL Server. @publisher est sysname, avec la valeur par défaut NULL.

@publisher ne doit pas être utilisé lors de la création d’un agent d’instantané sur un serveur de publication SQL Server.

[ @distributor_security_mode = ] distributor_security_mode

Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

[ @distributor_login = ] N’distributor_login'

Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

[ @distributor_password = ] N’distributor_password'

Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

Valeurs des codes de retour

0 (réussite) ou 1 (échec).

Notes

sp_addpublication_snapshot est utilisé dans la réplication d’instantanés, la réplication transactionnelle et la réplication de fusion.

Exemples

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

autorisations

Seuls les membres du rôle serveur fixe sysadmin ou db_owner rôle de base de données fixe peuvent s’exécuter sp_addpublication_snapshot.