Créer et appliquer l'instantané initialCreate and Apply the Initial Snapshot

Cette rubrique explique comment créer et appliquer l'instantané initial dans SQL Server 2017SQL Server 2017 à l'aide de SQL Server Management StudioSQL Server Management Studio, de Transact-SQLTransact-SQLou des objets RMO (Replication Management Objects).This topic describes how to create and apply the initial snapshot in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, or Replication Management Objects (RMO). Les publications de fusion qui utilisent des filtres paramétrés nécessitent un instantané en deux parties.Merge publications that use parameterized filters require a two-part snapshot. Pour plus d'informations, voir Créer un instantané d’une publication de fusion avec des filtres paramétrés.For more information, see Create a Snapshot for a Merge Publication with Parameterized Filters.

Dans cette rubriqueIn This Topic

Utilisation de SQL Server Management Studio Using SQL Server Management Studio

Par défaut, si l'Agent SQL ServerSQL Server est en cours d'exécution, un instantané est généré par l'Agent d'instantané immédiatement après la création d'une publication par l'Assistant Nouvelle publication.By default, if SQL ServerSQL Server Agent is running, a snapshot is generated by the Snapshot Agent immediately after a publication is created with the New Publication Wizard. Il est ensuite appliqué par défaut par l'Agent de distribution (pour la réplication d'instantané et transactionnelle) ou l'Agent de fusion (pour les abonnements de fusion) pour tous les abonnements.By default, it is then applied by the Distribution Agent (for snapshot and transactional replication) or Merge Agent (for merge subscriptions) for all subscriptions. Il est également possible de générer un instantané à l'aide de SQL Server Management StudioSQL Server Management Studio et du Moniteur de réplication.A snapshot can also be generated using SQL Server Management StudioSQL Server Management Studio and Replication Monitor. Pour plus d’informations sur le démarrage du moniteur de réplication, consultez Démarrer le moniteur de réplication.For information about starting Replication Monitor, see Start the Replication Monitor.

Pour créer un instantané dans Management StudioTo create a snapshot in Management Studio

  1. Connectez-vous au serveur de publication dans Management StudioManagement Studio, puis développez le nœud du serveur.Connect to the Publisher in Management StudioManagement Studio, and then expand the server node.

  2. Développez le dossier Réplication , puis développez le dossier Publications locales .Expand the Replication folder, and then expand the Local Publications folder.

  3. Cliquez avec le bouton droit sur la réplication pour laquelle vous souhaitez créer un instantané, puis cliquez sur Afficher l'état de l'Agent d'instantané.Right-click the publication for which you want to create a snapshot, and then click View Snapshot Agent Status.

  4. Dans la boîte de dialogue Afficher l’état de l’Agent d’instantané - <Publication>, cliquez sur Démarrer.In the View Snapshot Agent Status - <Publication> dialog box, click Start.

    Lorsque l'Agent d'instantané termine la génération de l'instantané, un message comme celui-ci s'affiche : « [100 %] Un instantané de 17 article(s) a été généré ».When the Snapshot Agent finishes generating the snapshot, a message will be displayed, such as "[100%] A snapshot of 17 article(s) was generated."

Pour créer un instantané dans le Moniteur de réplicationTo create a snapshot in Replication Monitor

  1. Dans le moniteur de réplication, développez un groupe de serveurs de publication dans le volet gauche, puis développez un serveur de publication.In Replication Monitor, expand a Publisher group in the left pane, and then expand a Publisher.

  2. Cliquez avec le bouton droit sur la réplication pour laquelle vous souhaitez créer un instantané, puis cliquez sur Générer l'instantané.Right-click the publication for which you want to generate a snapshot, and then click Generate Snapshot.

  3. Pour afficher le statut de l'Agent d'instantané, cliquez sur l'onglet Agents . Pour des informations plus détaillées, cliquez avec le bouton droit sur l'Agent d'instantané dans la grille, puis cliquez sur Afficher les détails.To view the status of the Snapshot Agent, click the Agents tab. For more detailed information, right-click the Snapshot Agent in the grid, and then click View Details.

Pour appliquer un instantanéTo apply a snapshot

  1. Une fois que l'instantané est généré, il est appliqué en synchronisant l'abonnement avec l'Agent de distribution ou l'Agent de fusion :After the snapshot is generated, it is applied by synchronizing the subscription with the Distribution Agent or the Merge Agent:

    • Si l'Agent est paramétré pour une exécution en continu (par défaut pour la réplication transactionnelle); l'instantané est appliqué automatiquement après avoir été généré.If the agent is set to run continuously (the default for transactional replication), the snapshot is automatically applied after it is generated.

    • Si l'Agent est paramétré pour une exécution planifiée, l'instantané est appliqué à la prochaine exécution planifiée de l'Agent.If the agent is set to run on a schedule, the snapshot is applied the next time the agent is scheduled to run.

    • Si l'Agent est paramétré pour une exécution à la demande, l'instantané est appliqué la prochaine fois que vous exécutez l'Agent.If the agent is set to run on demand, it is applied the next time you run the agent.

      Pour plus d'informations sur la synchronisation des abonnements, consultez Synchroniser un abonnement par émission (Push et Synchroniser un abonnement par extraction (Pull).For more information about synchronizing subscriptions, see Synchronize a Push Subscription and Synchronize a Pull Subscription.

Utilisation de Transact-SQL Using Transact-SQL

Les instantanés initiaux peuvent être créés par programme en créant et exécutant un travail de l'Agent d'instantané ou en exécutant le fichier exécutable de l'Agent d'instantané à partir d'un fichier de commandes.Initial snapshots can be programmatically created either by creating and running a Snapshot Agent job or by running the Snapshot Agent executable file from a batch file. Une fois qu'un instantané initial a été généré, il est transféré et appliqué sur l'Abonné lorsque l'abonnement est synchronisé pour la première fois.After an initial snapshot has been generated, it is transferred to and applied at the Subscriber when the subscription is first synchronized. Si vous exécutez l'Agent d'instantané à partir d'une invite de commandes ou d'un fichier de commandes, vous devrez exécuter de nouveau l'agent chaque fois que l'instantané existant deviendra non valide.If you run the Snapshot Agent from a command prompt or a batch file, you will need to rerun the agent whenever the existing snapshot becomes invalid.

Important

Lorsque c'est possible, demande aux utilisateurs de fournir les informations d'identification au moment de l'exécution.When possible, prompt users to enter security credentials at runtime. Si vous devez enregistrer les informations d'identification dans un fichier de script, vous devez sécuriser le fichier pour empêcher un accès non autorisé.If you must store credentials in a script file, you must secure the file to prevent unauthorized access.

Pour créer et exécuter un travail de l'Agent d'instantané pour générer l'instantané initialTo create and run a Snapshot Agent job to generate the initial snapshot

  1. Créez une publication d'instantané, transactionnelle ou de fusion.Create a snapshot, transactional, or merge publication. Pour plus d’informations, consultez Créer une publication.For more information, see Create a Publication.

  2. Exécutez sp_addpublication_snapshot (Transact-SQL).Execute sp_addpublication_snapshot (Transact-SQL). Spécifiez @publication et les paramètres suivants :Specify @publication and the following parameters:

    • @job_login, qui spécifie les informations d’identification de l’authentification Windows qu’utilise l’Agent d’instantané pour s’exécuter sur le serveur de distribution.The @job_login, which specifies the Windows Authentication credentials under which the Snapshot Agent runs at the Distributor.

    • @job_password, qui correspond au mot de passe pour les informations d’identification Windows fournies.The @job_password, which is the password for the supplied Windows credentials.

    • (Facultatif) La valeur 0 pour @publisher_security_mode si l'agent utilisera l'authentification SQL Server lors de la connexion au serveur de publication.(Optional) A value of 0 for @publisher_security_mode if the agent will use SQL Server Authentication when connecting to the Publisher. Dans ce cas, vous devez également spécifier les informations de connexion d'authentification SQL Server pour @publisher_login et @publisher_password.In this case, you must also specify the SQL Server Authentication login information for @publisher_login and @publisher_password.

    • (Facultatif) Une planification de synchronisation pour le travail de l'Agent d'instantané.(Optional) A synchronization schedule for the Snapshot Agent job. Pour plus d'informations, voir Specify Synchronization Schedules.For more information, see Specify Synchronization Schedules.

    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.When configuring a Publisher with a remote Distributor, the values supplied for all parameters, including job_login and job_password, are sent to the Distributor as plain text. 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.You should encrypt the connection between the Publisher and its remote Distributor before executing this stored procedure. Pour plus d’informations, consultez Activer des connexions chiffrées dans le moteur de base de données (Gestionnaire de configuration SQL Server).For more information, see Enable Encrypted Connections to the Database Engine (SQL Server Configuration Manager).

  3. Ajoutez des articles à la publication.Add articles to the publication. Pour plus d'informations, voir Define an Article.For more information, see Define an Article.

  4. Dans la base de données de publication sur le serveur de publication, exécutez sp_startpublication_snapshot (Transact-SQL), en spécifiant la valeur @publication créée à l’étape 1.At the Publisher on the publication database, execute sp_startpublication_snapshot (Transact-SQL), specifying the value of @publication from step 1.

Pour exécuter l'Agent d'instantané afin de générer l'instantané initialTo run the Snapshot Agent to generate the initial snapshot

  1. Créez une publication d'instantané, transactionnelle ou de fusion.Create a snapshot, transactional, or merge publication. Pour plus d'informations, voir Create a Publication.For more information, see Create a Publication.

  2. Ajoutez des articles à la publication.Add articles to the publication. Pour plus d'informations, voir Define an Article.For more information, see Define an Article.

  3. À partir de l'invite de commandes ou d'un fichier de commandes, démarrez l' Replication Snapshot Agent en exécutant snapshot.exe, en spécifiant les arguments de ligne de commande suivants :From the command prompt or in a batch file, start the Replication Snapshot Agent by running snapshot.exe, specifying the following command-line arguments:

    • -Publication-Publication

    • -Publisher-Publisher

    • -Distributor-Distributor

    • -PublisherDB-PublisherDB

    • -ReplicationType-ReplicationType

      Si vous utilisez l'authentification SQL Server, vous devez également spécifier les arguments suivants :If you are using SQL Server Authentication, you must also specify the following arguments:

    • -DistributorLogin-DistributorLogin

    • -DistributorPassword-DistributorPassword

    • -DistributorSecurityMode = 0-DistributorSecurityMode = 0

    • -PublisherLogin-PublisherLogin

    • -PublisherPassword-PublisherPassword

    • -PublisherSecurityMode = 0-PublisherSecurityMode = 0

Exemples (Transact-SQL) Examples (Transact-SQL)

Cet exemple montre comment créer une publication transactionnelle et ajouter un travail de l'Agent d'instantané pour la nouvelle publication (à l'aide des variables de script sqlcmd ).This example shows how to create a transactional publication and add a Snapshot Agent job for the new publication (using sqlcmd scripting variables). L'exemple démarre également le travail.The example also starts the job.

-- 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'AdventureWorks2012'; --publication database
SET @publication = N'AdvWorksCustomerTran'; -- transactional publication name
SET @login = $(Login);
SET @password = $(Password);

USE [AdventureWorks]

-- Enable transactional and 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 security mode used when connecting to the Publisher.
  @publisher_security_mode = 1;

-- Create new transactional publication, using the defaults. 
USE [AdventureWorks2012]
EXEC sp_addpublication 
  @publication = @publication, 
  @description = N'transactional publication';

-- Create a new snapshot job for the publication, using the defaults.
EXEC sp_addpublication_snapshot 
  @publication = @publication,
  @job_login = @login,
  @job_password = @password;

-- Start the Snapshot Agent job.
EXEC sp_startpublication_snapshot @publication = @publication;
GO

Cet exemple crée une publication de fusion et ajoute un travail de l'Agent d'instantané (à l'aide des variables sqlcmd ) pour la publication.This example creates a merge publication and adds a Snapshot Agent job (using sqlcmd variables) for the publication. Cet exemple démarre également le travail.This example also starts the job.

-- To avoid storing the login and password in the script file, the value 
-- is passed into SQLCMD as a scripting variable. 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'AdventureWorks2012'; 
SET @publication = N'AdvWorksSalesOrdersMerge'; 
SET @login = $(Login);
SET @password = $(Password);

-- Enable merge replication on the publication database.
USE master
EXEC sp_replicationdboption 
  @dbname = @publicationDB, 
  @optname=N'merge publish',
  @value = N'true';

-- Create new merge publication, using the defaults. 
USE [AdventureWorks]
EXEC sp_addmergepublication 
  @publication = @publication, 
  @description = N'Merge publication.';

-- Create a new snapshot job for the publication, using the defaults.
EXEC sp_addpublication_snapshot 
  @publication = @publication,
  @job_login = @login,
  @job_password = @password;

-- Start the Snapshot Agent job.
EXEC sp_startpublication_snapshot @publication = @publication;
GO

Les arguments de ligne de commande suivants démarrent l'Agent d'instantané pour générer l'instantané pour une publication de fusion.The following command-line arguments start the Snapshot Agent to generate the snapshot for a merge publication.

Note

Des sauts de ligne ont été ajoutés pour améliorer la lisibilité.Line breaks were added to improve readability. Dans un fichier de commandes, les commandes doivent figurer sur une seule ligne.In a batch file, commands must be made in a single line.


REM -- Declare variables  
SET Publisher=%InstanceName%  
SET PublicationDB=AdventureWorks2012   
SET Publication=AdvWorksSalesOrdersMerge   

REM --Start the Snapshot Agent to generate the snapshot for AdvWorksSalesOrdersMerge.  
"C:\Program Files\Microsoft SQL Server\120\COM\SNAPSHOT.EXE" -Publication %Publication%   
-Publisher %Publisher% -Distributor %Publisher% -PublisherDB %PublicationDB%   
-ReplicationType 2 -OutputVerboseLevel 1 -DistributorSecurityMode 1  

Utilisation d'objets RMO (Replication Management Objects) Using Replication Management Objects (RMO)

L'Agent d'instantané génère des instantanés après qu'une publication a été créée.The Snapshot Agent generates snapshots after a publication is created. Vous pouvez générer ces instantanés par programme en utilisant les Replication Management Objects et l'accès direct par code managé aux fonctionnalités de l'Agent de réplication.You can generate these snapshots programmatically by using Replication Management Objects (RMO) and direct managed code access to replication agent functionalities. Les objets à utiliser dépendent du type de réplication.The objects you use depend on the type of replication. L'Agent d'instantané peut être démarré de façon synchrone à l'aide de l'objet Microsoft.SqlServer.Replication.SnapshotGenerationAgent ou de façon asynchrone à l'aide du travail de l'agent.The Snapshot Agent can be started synchronously using the Microsoft.SqlServer.Replication.SnapshotGenerationAgent object or asynchronously using the agent job. Une fois l'instantané initial généré, il est transféré et appliqué sur l'Abonné lorsque l'abonnement est synchronisé pour la première fois.After the initial snapshot has been generated, it is transferred to and applied at the Subscriber when the subscription is first synchronized. Vous devrez exécuter de nouveau l'agent chaque fois que l'instantané existant ne contiendra plus de données valides à jour.You will need to rerun the agent whenever the existing snapshot no longer contains valid, up-to-date data. Pour plus d’informations, consultez Gestion des publications.For more information, see Maintain Publications.

Important

Lorsque c'est possible, demande aux utilisateurs de fournir les informations d'identification au moment de l'exécution.When possible, prompt users to enter security credentials at runtime. Si vous devez stocker des informations d'identification, utilisez les Services de chiffrement fournis par MicrosoftMicrosoft Windows .NET Framework.If you must store credentials, use the cryptographic services provided by the MicrosoftMicrosoft Windows .NET Framework.

Pour générer l'instantané initial pour une publication transactionnelle ou d'instantané en démarrant le travail de l'Agent d'instantané (asynchrone)To generate the initial snapshot for a snapshot or transactional publication by starting the Snapshot Agent job (asynchronous)

  1. Créez une connexion au serveur de publication en utilisant la classe ServerConnection .Create a connection to the Publisher by using the ServerConnection class.

  2. Créez une instance de la classe TransPublication .Create an instance of the TransPublication class. Définissez les propriétés Name et DatabaseName de la publication, et définissez la propriété ConnectionContext avec la connexion créée à l'étape 1.Set the Name and DatabaseName properties for the publication, and set the ConnectionContext property to the connection created in step 1.

  3. Appelez la méthode LoadProperties pour charger les propriétés restantes de l'objet.Call the LoadProperties method to load the remaining properties of the object. Si cette méthode retourne false, soit les propriétés de la publication ont été définies de manière incorrecte à l'étape 2, soit la publication n'existe pas.If this method returns false, either the publication properties in step 2 were defined incorrectly or the publication does not exist.

  4. Si SnapshotAgentExists a la valeur false, appelez CreateSnapshotAgent pour créer le travail de l'Agent d'instantané pour cette publication.If the value of SnapshotAgentExists is false, call CreateSnapshotAgent to create the snapshot agent job for this publication.

  5. Appelez la méthode StartSnapshotGenerationAgentJob pour démarrer le travail de l'agent qui génère l'instantané pour cette publication.Call the StartSnapshotGenerationAgentJob method to start the agent job that generates the snapshot for this publication.

  6. (Facultatif) Lorsque SnapshotAvailable a la valeur true, l'instantané est à la disposition des Abonnés.(Optional) When the value of SnapshotAvailable is true, the snapshot is available to Subscribers.

Pour générer l'instantané initial pour une publication transactionnelle ou d'instantané en exécutant l'Agent d'instantané (synchrone)To generate the initial snapshot for a snapshot or transactional publication by running the Snapshot Agent (synchronous)

  1. Créez une instance de la classe Microsoft.SqlServer.Replication.SnapshotGenerationAgent et définissez les propriétés requises suivantes :Create an instance of the Microsoft.SqlServer.Replication.SnapshotGenerationAgent class, and set the following required properties:

  2. Spécifiez la valeur Transactional ou Snapshot pour Microsoft.SqlServer.Replication.SnapshotGenerationAgent.ReplicationType*.Set a value of Transactional or Snapshot for Microsoft.SqlServer.Replication.SnapshotGenerationAgent.ReplicationType*.

  3. Appelez la méthode Microsoft.SqlServer.Replication.SnapshotGenerationAgent.GenerateSnapshot* .Call the Microsoft.SqlServer.Replication.SnapshotGenerationAgent.GenerateSnapshot* method.

Pour générer l'instantané initial pour une publication de fusion en démarrant le travail de l'Agent d'instantané (asynchrone)To generate the initial snapshot for a merge publication by starting the Snapshot Agent job (asynchronous)

  1. Créez une connexion au serveur de publication en utilisant la classe ServerConnection .Create a connection to the Publisher by using the ServerConnection class.

  2. Créez une instance de la classe MergePublication .Create an instance of the MergePublication class. Définissez les propriétés Name et DatabaseName de la publication, et définissez la propriété ConnectionContext avec la connexion créée à l'étape 1.Set the Name and DatabaseName properties for the publication, and set the ConnectionContext property to the connection created in step 1.

  3. Appelez la méthode LoadProperties pour charger les propriétés restantes de l'objet.Call the LoadProperties method to load the remaining properties of the object. Si cette méthode retourne false, soit les propriétés de la publication ont été définies de manière incorrecte à l'étape 2, soit la publication n'existe pas.If this method returns false, either the publication properties in step 2 were defined incorrectly or the publication does not exist.

  4. Si SnapshotAgentExists a la valeur false, appelez CreateSnapshotAgent pour créer le travail de l'Agent d'instantané pour cette publication.If the value of SnapshotAgentExists is false, call CreateSnapshotAgent to create the snapshot agent job for this publication.

  5. Appelez la méthode StartSnapshotGenerationAgentJob pour démarrer le travail de l'agent qui génère l'instantané pour cette publication.Call the StartSnapshotGenerationAgentJob method to start the agent job that generates the snapshot for this publication.

  6. (Facultatif) Lorsque SnapshotAvailable a la valeur true, l'instantané est à la disposition des Abonnés.(Optional) When the value of SnapshotAvailable is true, the snapshot is available to Subscribers.

Pour générer l'instantané initial pour une publication de fusion en exécutant l'Agent d'instantané (synchrone)To generate the initial snapshot for a merge publication by running the Snapshot Agent (synchronous)

  1. Créez une instance de la classe Microsoft.SqlServer.Replication.SnapshotGenerationAgent et définissez les propriétés requises suivantes :Create an instance of the Microsoft.SqlServer.Replication.SnapshotGenerationAgent class, and set the following required properties:

  2. Spécifiez la valeur Merge pour Microsoft.SqlServer.Replication.SnapshotGenerationAgent.ReplicationType*.Set a value of Merge for Microsoft.SqlServer.Replication.SnapshotGenerationAgent.ReplicationType*.

  3. Appelez la méthode Microsoft.SqlServer.Replication.SnapshotGenerationAgent.GenerateSnapshot* .Call the Microsoft.SqlServer.Replication.SnapshotGenerationAgent.GenerateSnapshot* method.

Exemples (RMO) Examples (RMO)

Cet exemple exécute de façon synchrone l'Agent d'instantané pour générer l'instantané initial pour une publication transactionnelle.This example synchronously runs the Snapshot Agent to generate the initial snapshot for a transactional publication.

// Set the Publisher, publication database, and publication names.
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2012";
string publisherName = publisherInstance;
string distributorName = publisherInstance;

SnapshotGenerationAgent agent;

try
{
	// Set the required properties for Snapshot Agent.
	agent = new SnapshotGenerationAgent();
	agent.Distributor = distributorName;
	agent.DistributorSecurityMode = SecurityMode.Integrated;
	agent.Publisher = publisherName;
	agent.PublisherSecurityMode = SecurityMode.Integrated;
	agent.Publication = publicationName;
	agent.PublisherDatabase = publicationDbName;
	agent.ReplicationType = ReplicationType.Transactional;

	// Start the agent synchronously.
	agent.GenerateSnapshot();

}
catch (Exception ex)
{
	// Implement custom application error handling here.
	throw new ApplicationException(String.Format(
		"A snapshot could not be generated for the {0} publication."
		, publicationName), ex);
}
' Set the Publisher, publication database, and publication names.
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2012"
Dim publisherName As String = publisherInstance
Dim distributorName As String = publisherInstance

Dim agent As SnapshotGenerationAgent

Try
    ' Set the required properties for Snapshot Agent.
    agent = New SnapshotGenerationAgent()
    agent.Distributor = distributorName
    agent.DistributorSecurityMode = SecurityMode.Integrated
    agent.Publisher = publisherName
    agent.PublisherSecurityMode = SecurityMode.Integrated
    agent.Publication = publicationName
    agent.PublisherDatabase = publicationDbName
    agent.ReplicationType = ReplicationType.Transactional

    ' Start the agent synchronously.
    agent.GenerateSnapshot()

Catch ex As Exception
    ' Implement custom application error handling here.
    Throw New ApplicationException(String.Format( _
     "A snapshot could not be generated for the {0} publication." _
     , publicationName), ex)
End Try

Cet exemple démarre de façon asynchrone le travail de l'agent pour générer l'instantané initial pour une publication transactionnelle.This example asynchronously starts the agent job to generate the initial snapshot for a transactional publication.

// Set the Publisher, publication database, and publication names.
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2012";
string publisherName = publisherInstance;

TransPublication publication;

// Create a connection to the Publisher using Windows Authentication.
ServerConnection conn;
conn = new ServerConnection(publisherName);

try
{
	// Connect to the Publisher.
	conn.Connect();

	// Set the required properties for an existing publication.
	publication = new TransPublication();
	publication.ConnectionContext = conn;
	publication.Name = publicationName;
	publication.DatabaseName = publicationDbName;

	if (publication.LoadProperties())
	{
		// Start the Snapshot Agent job for the publication.
		publication.StartSnapshotGenerationAgentJob();
	}
	else
	{
		throw new ApplicationException(String.Format(
			"The {0} publication does not exist.", publicationName));
	}
}
catch (Exception ex)
{
	// Implement custom application error handling here.
	throw new ApplicationException(String.Format(
		"A snapshot could not be generated for the {0} publication."
		, publicationName), ex);
}
finally
{
	conn.Disconnect();
}
' Set the Publisher, publication database, and publication names.
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2012"
Dim publisherName As String = publisherInstance

Dim publication As TransPublication

' Create a connection to the Publisher using Windows Authentication.
Dim conn As ServerConnection
conn = New ServerConnection(publisherName)

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Set the required properties for an existing publication.
    publication = New TransPublication()
    publication.ConnectionContext = conn
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName

    If publication.LoadProperties() Then
        ' Start the Snapshot Agent job for the publication.
        publication.StartSnapshotGenerationAgentJob()
    Else
        Throw New ApplicationException(String.Format( _
         "The {0} publication does not exist.", publicationName))
    End If
Catch ex As Exception
    ' Implement custom application error handling here.
    Throw New ApplicationException(String.Format( _
     "A snapshot could not be generated for the {0} publication." _
     , publicationName), ex)
Finally
    conn.Disconnect()
End Try

Voir aussiSee Also

Create a Publication Create a Publication
Créer un abonnement par extraction Create a Pull Subscription
Create a Push Subscription Create a Push Subscription
Specify Synchronization Schedules Specify Synchronization Schedules
Créer et appliquer l’instantané Create and Apply the Snapshot
Initialiser un abonnement avec un instantané Initialize a Subscription with a Snapshot
Concepts liés à Replication Management Objects Replication Management Objects Concepts
Bonnes pratiques en matière de sécurité de la réplication Replication Security Best Practices
Concepts liés aux procédures stockées système de réplication Replication System Stored Procedures Concepts
Utiliser sqlcmd avec des variables de scriptUse sqlcmd with Scripting Variables