Creazione e applicazione dello snapshot inizialeCreate and Apply the Initial Snapshot

In questo argomento viene descritto come creare e applicare lo snapshot iniziale in SQL Server 2017SQL Server 2017 tramite SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQLo 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). Per le pubblicazioni di tipo merge che utilizzano filtri con parametri è necessario uno snapshot a due parti.Merge publications that use parameterized filters require a two-part snapshot. Per altre informazioni, vedere Create a Snapshot for a Merge Publication with Parameterized Filters.For more information, see Create a Snapshot for a Merge Publication with Parameterized Filters.

Contenuto dell'argomentoIn This Topic

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Per impostazione predefinita, se SQL ServerSQL Server Agent è in esecuzione, l'agente snapshot genera uno snapshot subito dopo la creazione di una pubblicazione mediante la Creazione guidata nuova pubblicazione.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. Sempre per impostazione predefinita, tale snapshot viene quindi applicato dall'agente di distribuzione (per la replica snapshot e transazionale) o dall'agente di merge (per le sottoscrizioni di tipo merge) per tutte le sottoscrizioni.By default, it is then applied by the Distribution Agent (for snapshot and transactional replication) or Merge Agent (for merge subscriptions) for all subscriptions. È anche possibile generare uno snapshot utilizzando SQL Server Management StudioSQL Server Management Studio e Monitoraggio replica.A snapshot can also be generated using SQL Server Management StudioSQL Server Management Studio and Replication Monitor. Per informazioni sull'avvio di Monitoraggio replica, vedere Avviare Monitoraggio replica.For information about starting Replication Monitor, see Start the Replication Monitor.

Per creare uno snapshot in Management StudioTo create a snapshot in Management Studio

  1. Connettersi al server di pubblicazione in Management StudioManagement Studioe quindi espandere il nodo del server.Connect to the Publisher in Management StudioManagement Studio, and then expand the server node.

  2. Espandere la cartella Replica e quindi la cartella Pubblicazioni locali .Expand the Replication folder, and then expand the Local Publications folder.

  3. Fare clic con il pulsante destro del mouse sulla pubblicazione per la quale si desidera creare uno snapshot, quindi scegliere Visualizza stato agente snapshot.Right-click the publication for which you want to create a snapshot, and then click View Snapshot Agent Status.

  4. Nella finestra di dialogo Visualizza stato agente snapshot - <Pubblicazione> fare clic su Avvia.In the View Snapshot Agent Status - <Publication> dialog box, click Start.

    Al termine della generazione dello snapshot, verrà visualizzato un messaggio del tipo "[100%] Generato uno snapshot di 17 articoli."When the Snapshot Agent finishes generating the snapshot, a message will be displayed, such as "[100%] A snapshot of 17 article(s) was generated."

Per creare uno snapshot in Monitoraggio replicaTo create a snapshot in Replication Monitor

  1. In Monitoraggio replica espandere un gruppo di server di pubblicazione nel riquadro di sinistra e quindi espandere un server di pubblicazione.In Replication Monitor, expand a Publisher group in the left pane, and then expand a Publisher.

  2. Fare clic con il pulsante destro del mouse sulla pubblicazione per la quale si desidera generare uno snapshot, quindi scegliere Genera snapshot.Right-click the publication for which you want to generate a snapshot, and then click Generate Snapshot.

  3. Per visualizzare lo stato dell'agente snapshot, fare clic sulla scheda Agenti .To view the status of the Snapshot Agent, click the Agents tab. Per informazioni più dettagliate, fare clic con il pulsante destro del mouse sull'agente snapshot nella griglia e scegliere Visualizza dettagli.For more detailed information, right-click the Snapshot Agent in the grid, and then click View Details.

Per applicare uno snapshotTo apply a snapshot

  1. Al termine della generazione, lo snapshot verrà applicato mediante la sincronizzazione della sottoscrizione con l'agente di distribuzione o l'agente di merge:After the snapshot is generated, it is applied by synchronizing the subscription with the Distribution Agent or the Merge Agent:

    • Se l'agente è impostato per l'esecuzione continua, ovvero l'impostazione predefinita per la replica transazionale, lo snapshot verrà applicato automaticamente al termine della generazione.If the agent is set to run continuously (the default for transactional replication), the snapshot is automatically applied after it is generated.

    • Se è invece impostato per l'esecuzione in base a una pianificazione, lo snapshot verrà applicato alla successiva esecuzione pianificata dell'agente.If the agent is set to run on a schedule, the snapshot is applied the next time the agent is scheduled to run.

    • Se l'agente è impostato per l'esecuzione su richiesta, lo snapshot verrà applicato alla successiva esecuzione dell'agente.If the agent is set to run on demand, it is applied the next time you run the agent.

      Per ulteriori informazioni sulla sincronizzazione delle sottoscrizioni, vedere Synchronize a Push Subscription e Synchronize a Pull Subscription.For more information about synchronizing subscriptions, see Synchronize a Push Subscription and Synchronize a Pull Subscription.

Utilizzo di Transact-SQL Using Transact-SQL

Gli snapshot iniziali possono essere creati a livello di programmazione creando ed eseguendo un processo dell'agente snapshot o eseguendo il file eseguibile dell'agente snapshot da un file batch.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. Dopo la generazione, lo snapshot iniziale viene trasferito e applicato al Sottoscrittore la prima volta che la sottoscrizione viene sincronizzata.After an initial snapshot has been generated, it is transferred to and applied at the Subscriber when the subscription is first synchronized. Se si esegue l'agente snapshot da un prompt dei comandi o un file batch, sarà necessario rieseguirlo ogni volta che lo snapshot esistente diventa non valido.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.

Importante

Se possibile, richiedere agli utenti di immettere le credenziali di sicurezza in fase di esecuzione.When possible, prompt users to enter security credentials at runtime. Se è necessario archiviare le credenziali in un file script, è fondamentale proteggere il file per evitare accessi non autorizzati.If you must store credentials in a script file, you must secure the file to prevent unauthorized access.

Per creare ed eseguire un processo dell'agente snapshot per generare lo snapshot inizialeTo create and run a Snapshot Agent job to generate the initial snapshot

  1. Creare una pubblicazione snapshot, transazionale o di tipo merge.Create a snapshot, transactional, or merge publication. Per altre informazioni, vedere Create a Publication.For more information, see Create a Publication.

  2. Eseguire sp_addpublication_snapshot (Transact-SQL).Execute sp_addpublication_snapshot (Transact-SQL). Specificare @publication e i parametri seguenti:Specify @publication and the following parameters:

    • @job_login, che specifica le credenziali dell'autenticazione di Windows con cui l'agente snapshot viene eseguito nel database di distribuzione.The @job_login, which specifies the Windows Authentication credentials under which the Snapshot Agent runs at the Distributor.

    • @job_password, che corrisponde alla password per le credenziali di Windows specificate.The @job_password, which is the password for the supplied Windows credentials.

    • (Facoltativo) Valore 0 per @publisher_security_mode se l'agente utilizzerà l'autenticazione di SQL Server per la connessione al server di pubblicazione.(Optional) A value of 0 for @publisher_security_mode if the agent will use SQL Server Authentication when connecting to the Publisher. In questo caso, è necessario specificare anche le informazioni di accesso dell'autenticazione di SQL Server per @publisher_login e @publisher_password.In this case, you must also specify the SQL Server Authentication login information for @publisher_login and @publisher_password.

    • (Facoltativo) Pianificazione della sincronizzazione per il processo dell'agente snapshot.(Optional) A synchronization schedule for the Snapshot Agent job. Per altre informazioni, vedere Specify Synchronization Schedules.For more information, see Specify Synchronization Schedules.

    Importante

    Quando si configura un server di pubblicazione con un server di distribuzione remoto, i valori specificati per tutti i parametri, inclusi job_login e job_password, vengono inviati al server di distribuzione come testo normale.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. È consigliabile crittografare la connessione tra il server di pubblicazione e il server di distribuzione remoto prima di eseguire questa stored procedure.You should encrypt the connection between the Publisher and its remote Distributor before executing this stored procedure. Per altre informazioni, vedere Abilitare le connessioni crittografate al motore di database (Gestione configurazione SQL Server).For more information, see Enable Encrypted Connections to the Database Engine (SQL Server Configuration Manager).

  3. Aggiungere articoli alla pubblicazione.Add articles to the publication. Per altre informazioni, vedere Define an Article.For more information, see Define an Article.

  4. Nel database di pubblicazione del server di pubblicazione eseguire sp_startpublication_snapshot (Transact-SQL), specificando il valore @publication dal passaggio 1.At the Publisher on the publication database, execute sp_startpublication_snapshot (Transact-SQL), specifying the value of @publication from step 1.

Per eseguire l'agente snapshot per generare lo snapshot inizialeTo run the Snapshot Agent to generate the initial snapshot

  1. Creare una pubblicazione snapshot, transazionale o di tipo merge.Create a snapshot, transactional, or merge publication. Per altre informazioni, vedere Create a Publication.For more information, see Create a Publication.

  2. Aggiungere articoli alla pubblicazione.Add articles to the publication. Per altre informazioni, vedere Define an Article.For more information, see Define an Article.

  3. Dal prompt dei comandi o in un file batch avviare l' Replication Snapshot Agent eseguendo snapshot.execon gli argomenti della riga di comando seguenti: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

      Se si usano l'autenticazione di SQL Server, è inoltre necessario specificare gli argomenti seguenti: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

Esempi (Transact-SQL) Examples (Transact-SQL)

In questo esempio viene illustrato come creare una pubblicazione transazionale e aggiungere un processo dell'agente snapshot per la nuova pubblicazione (utilizzando le variabili di scripting SQLCMD ).This example shows how to create a transactional publication and add a Snapshot Agent job for the new publication (using sqlcmd scripting variables). Viene inoltre avviato il processo.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

In questo esempio viene creata una pubblicazione di tipo merge e viene aggiunto un processo dell'agente snapshot (utilizzando le variabili sqlcmd ) per la pubblicazione.This example creates a merge publication and adds a Snapshot Agent job (using sqlcmd variables) for the publication. Viene inoltre avviato il processo.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

Con gli argomenti della riga di comando seguenti l'agente snapshot viene avviato per generare lo snapshot per una pubblicazione di tipo merge.The following command-line arguments start the Snapshot Agent to generate the snapshot for a merge publication.

Nota

Le interruzioni di riga sono state aggiunte per agevolare la lettura.Line breaks were added to improve readability. I comandi in un file batch devono essere inseriti in un'unica riga.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  

Utilizzo di RMO (Replication Management Objects) Using Replication Management Objects (RMO)

L'agente snapshot genera gli snapshot al termine della creazione di una pubblicazione.The Snapshot Agent generates snapshots after a publication is created. È possibile generare questi snapshot a livello di programmazione tramite gli oggetti RMO (Replication Management Objects) e l'accesso diretto tramite codice gestito alle funzionalità dell'agente di replica.You can generate these snapshots programmatically by using Replication Management Objects (RMO) and direct managed code access to replication agent functionalities. Gli oggetti utilizzati dipendono dal tipo di replica.The objects you use depend on the type of replication. L'agente snapshot può essere avviato in modo sincrono tramite l'oggetto Microsoft.SqlServer.Replication.SnapshotGenerationAgent o in modo asincrono tramite il processo dell'agente.The Snapshot Agent can be started synchronously using the Microsoft.SqlServer.Replication.SnapshotGenerationAgent object or asynchronously using the agent job. Dopo la generazione, lo snapshot iniziale viene trasferito e applicato al Sottoscrittore la prima volta che la sottoscrizione viene sincronizzata.After the initial snapshot has been generated, it is transferred to and applied at the Subscriber when the subscription is first synchronized. È necessario rieseguire l'agente ogni volta che lo snapshot esistente non contiene più dati validi e aggiornati.You will need to rerun the agent whenever the existing snapshot no longer contains valid, up-to-date data. Per altre informazioni, vedere Gestire le pubblicazioni.For more information, see Maintain Publications.

Importante

Se possibile, richiedere agli utenti di immettere le credenziali di sicurezza in fase di esecuzione.When possible, prompt users to enter security credentials at runtime. Se è necessario archiviare le credenziali, utilizzare i servizi di crittografia offerti da MicrosoftMicrosoft Windows .NET Framework.If you must store credentials, use the cryptographic services provided by the MicrosoftMicrosoft Windows .NET Framework.

Per generare lo snapshot iniziale per una pubblicazione snapshot o transazionale avviando il processo dell'agente snapshot (modo asincrono)To generate the initial snapshot for a snapshot or transactional publication by starting the Snapshot Agent job (asynchronous)

  1. Creare una connessione al server di pubblicazione tramite la classe ServerConnection.Create a connection to the Publisher by using the ServerConnection class.

  2. Creare un'istanza della classe TransPublication.Create an instance of the TransPublication class. Impostare le proprietà Name e DatabaseName per la pubblicazione, quindi impostare la proprietà ConnectionContext sulla connessione creata nel passaggio 1.Set the Name and DatabaseName properties for the publication, and set the ConnectionContext property to the connection created in step 1.

  3. Chiamare il metodo LoadProperties per caricare le proprietà rimanenti dell'oggetto.Call the LoadProperties method to load the remaining properties of the object. Se questo metodo restituisce false, le proprietà della pubblicazione sono state definite in modo non corretto nel passaggio 2 oppure la pubblicazione non esiste.If this method returns false, either the publication properties in step 2 were defined incorrectly or the publication does not exist.

  4. Se il valore di SnapshotAgentExists è false, chiamare CreateSnapshotAgent per creare il processo dell'agente snapshot per questa pubblicazione.If the value of SnapshotAgentExists is false, call CreateSnapshotAgent to create the snapshot agent job for this publication.

  5. Chiamare il metodo StartSnapshotGenerationAgentJob per avviare il processo dell'agente che genera lo snapshot per la pubblicazione.Call the StartSnapshotGenerationAgentJob method to start the agent job that generates the snapshot for this publication.

  6. (Facoltativo) Quando il valore di SnapshotAvailable è true, lo snapshot è disponibile per i Sottoscrittori.(Optional) When the value of SnapshotAvailable is true, the snapshot is available to Subscribers.

Per generare lo snapshot iniziale per una pubblicazione snapshot o transazionale eseguendo il processo dell'agente snapshot (modo sincrono)To generate the initial snapshot for a snapshot or transactional publication by running the Snapshot Agent (synchronous)

  1. Creare un'istanza della classe Microsoft.SqlServer.Replication.SnapshotGenerationAgent e impostare le proprietà obbligatorie seguenti:Create an instance of the Microsoft.SqlServer.Replication.SnapshotGenerationAgent class, and set the following required properties:

  2. Impostare il valore Transactional o Snapshot per Microsoft.SqlServer.Replication.SnapshotGenerationAgent.ReplicationType*.Set a value of Transactional or Snapshot for Microsoft.SqlServer.Replication.SnapshotGenerationAgent.ReplicationType*.

  3. Chiamare il metodo Microsoft.SqlServer.Replication.SnapshotGenerationAgent.GenerateSnapshot*.Call the Microsoft.SqlServer.Replication.SnapshotGenerationAgent.GenerateSnapshot* method.

Per generare lo snapshot iniziale per una pubblicazione di tipo merge avviando il processo dell'agente snapshot (modo asincrono)To generate the initial snapshot for a merge publication by starting the Snapshot Agent job (asynchronous)

  1. Creare una connessione al server di pubblicazione tramite la classe ServerConnection.Create a connection to the Publisher by using the ServerConnection class.

  2. Creare un'istanza della classe MergePublication.Create an instance of the MergePublication class. Impostare le proprietà Name e DatabaseName per la pubblicazione, quindi impostare la proprietà ConnectionContext sulla connessione creata nel passaggio 1.Set the Name and DatabaseName properties for the publication, and set the ConnectionContext property to the connection created in step 1.

  3. Chiamare il metodo LoadProperties per caricare le proprietà rimanenti dell'oggetto.Call the LoadProperties method to load the remaining properties of the object. Se questo metodo restituisce false, le proprietà della pubblicazione sono state definite in modo non corretto nel passaggio 2 oppure la pubblicazione non esiste.If this method returns false, either the publication properties in step 2 were defined incorrectly or the publication does not exist.

  4. Se il valore di SnapshotAgentExists è false, chiamare CreateSnapshotAgent per creare il processo dell'agente snapshot per questa pubblicazione.If the value of SnapshotAgentExists is false, call CreateSnapshotAgent to create the snapshot agent job for this publication.

  5. Chiamare il metodo StartSnapshotGenerationAgentJob per avviare il processo dell'agente che genera lo snapshot per la pubblicazione.Call the StartSnapshotGenerationAgentJob method to start the agent job that generates the snapshot for this publication.

  6. (Facoltativo) Quando il valore di SnapshotAvailable is true, lo snapshot è disponibile per i Sottoscrittori.(Optional) When the value of SnapshotAvailable is true, the snapshot is available to Subscribers.

Per generare lo snapshot iniziale per una pubblicazione di tipo merge eseguendo il processo dell'agente snapshot (modo sincrono)To generate the initial snapshot for a merge publication by running the Snapshot Agent (synchronous)

  1. Creare un'istanza della classe Microsoft.SqlServer.Replication.SnapshotGenerationAgent e impostare le proprietà obbligatorie seguenti:Create an instance of the Microsoft.SqlServer.Replication.SnapshotGenerationAgent class, and set the following required properties:

  2. Impostare il valore Merge per Microsoft.SqlServer.Replication.SnapshotGenerationAgent.ReplicationType*.Set a value of Merge for Microsoft.SqlServer.Replication.SnapshotGenerationAgent.ReplicationType*.

  3. Chiamare il metodo Microsoft.SqlServer.Replication.SnapshotGenerationAgent.GenerateSnapshot*.Call the Microsoft.SqlServer.Replication.SnapshotGenerationAgent.GenerateSnapshot* method.

Esempi (RMO) Examples (RMO)

In questo esempio viene eseguito l'agente snapshot in modo sincrono per generare lo snapshot iniziale per una pubblicazione transazionale.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

In questo esempio viene avviato l'agente snapshot in modo asincrono per generare lo snapshot iniziale per una pubblicazione transazionale.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

Vedere ancheSee Also

Create a Publication Create a Publication
Creare una sottoscrizione pull Create a Pull Subscription
Create a Push Subscription Create a Push Subscription
Specify Synchronization Schedules Specify Synchronization Schedules
Creare e applicare lo snapshot Create and Apply the Snapshot
Inizializzare una sottoscrizione con uno snapshot Initialize a Subscription with a Snapshot
Replication Management Objects Concepts Replication Management Objects Concepts
Procedure consigliate per la sicurezza della replica Replication Security Best Practices
Replication System Stored Procedures Concepts Replication System Stored Procedures Concepts
Usare sqlcmd con variabili di scripting Use sqlcmd with Scripting Variables