sp_addpublication_snapshot (Transact-SQL)

Si applica a:SQL ServerIstanza gestita di SQL di Azure

Crea l'agente snapshot per la pubblicazione specificata. Questa stored procedure viene eseguita nel database di pubblicazione del server di pubblicazione.

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. È consigliabile crittografare la connessione tra il server di pubblicazione e il server di distribuzione remoto prima di eseguire questa stored procedure. Per altre informazioni, vedere Configurare l'motore di database di SQL Server per la crittografia delle connessioni.

Convenzioni di sintassi Transact-SQL

Sintassi

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

Argomenti

[ @publication = ] N'publication'

Nome della pubblicazione. @publication è sysname, senza impostazione predefinita.

[ @frequency_type = ] frequency_type

Frequenza con cui viene eseguita la agente di snapshot. @frequency_type è int e può essere uno dei valori seguenti.

Valore Descrizione
1 Una sola volta
4 (predefinito) Ogni giorno
8 Settimanale
16 Mensile
32 Mensile, in base all'intervallo di frequenza
64 All'avvio di SQL Server Agent
128 Quando il computer è inattivo

[ @frequency_interval = ] frequency_interval

Valore da applicare alla frequenza impostata da @frequency_type. @frequency_interval è int e può essere uno dei valori seguenti.

Valore di frequency_type Effetto su frequency_interval
1 @frequency_interval non è usato.
4 (predefinito) Ogni @frequency_interval giorni, con un valore predefinito giornaliero.
8 @frequency_interval è uno o più dei seguenti elementi (combinati con un oggetto | (OR bit per bit) Operatore logico):

1 = Domenica |

2 = Lunedì |

4 = Martedì |

8 = Mercoledì |

16 = Giovedì |

32 = Venerdì |

64 = Sabato
16 Nel @frequency_interval giorno del mese.
32 @frequency_interval è uno dei valori seguenti:

1 = Domenica |

2 = Lunedì |

3 = Martedì |

4 = Mercoledì |

5 = Giovedì |

6 = Venerdì |

7 = Sabato |

8 = Giorno |

9 = Giorno feriale |

10 = Giorno del fine settimana
64 @frequency_interval non è usato.
128 @frequency_interval non è usato.

[ @frequency_subday = ] frequency_subday

Unità per freq_subday_interval. @frequency_subday è int e può essere uno di questi valori.

Valore Descrizione
1 Una sola volta
2 Secondo
4 (predefinito) Minute
8 Ore

[ @frequency_subday_interval = ] frequency_subday_interval

Intervallo per frequency_subday, espresso in minuti. @frequency_subday_interval è int, con il valore predefinito 5.

[ @frequency_relative_interval = ] frequency_relative_interval

Data di esecuzione del agente di snapshot. @frequency_relative_interval è int, con il valore predefinito 1.

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

Fattore di ricorrenza utilizzato da frequency_type. @frequency_recurrence_factor è int, con un valore predefinito .0

[ @active_start_date = ] active_start_date

Data in cui il agente di snapshot viene pianificato per la prima volta, formattato come yyyyMMdd. @active_start_date è int, con un valore predefinito .0

[ @active_end_date = ] active_end_date

Data in cui il agente di snapshot smette di essere pianificato, formattato come yyyyMMdd. @active_end_date è int, con un valore predefinito 99991231, che indica il 31 dicembre 9999.

[ @active_start_time_of_day = ] active_start_time_of_day

Ora del giorno in cui il agente di snapshot viene pianificato per la prima volta, formattato come HHmmss. @active_start_time_of_day è int, con il valore predefinito 0.

[ @active_end_time_of_day = ] active_end_time_of_day

Ora del giorno in cui il agente di snapshot smette di essere pianificato, formattato come HHmmss. @active_end_time_of_day è int, con un valore predefinito , 235959che significa 11:59:59 P.M. come misurato su un orologio di 24 ore.

[ @snapshot_job_name = ] N'snapshot_job_name'

Nome di un nome di processo agente di snapshot esistente se viene usato un processo esistente. @snapshot_job_name è nvarchar(100), con il valore predefinito NULL. Questo parametro è destinato all'uso interno e non deve essere specificato durante la creazione di una nuova pubblicazione. Se si specifica @snapshot_agent_name , @job_login e @job_password devono essere NULL.

[ @publisher_security_mode = ] publisher_security_mode

Nota

Microsoft Entra ID era precedentemente noto come Azure Active Directory (Azure AD).

Modalità di sicurezza utilizzata dall'agente durante la connessione al server di pubblicazione. @publisher_security_mode è int, con un valore predefinito .1 È necessario specificare un valore per i server di 0 pubblicazione non SQL Server. Se possibile, usare l'autenticazione di Windows. I valori seguenti definiscono la modalità di sicurezza:

  • 0 specifica l'autenticazione di SQL Server.
  • 1specifica autenticazione di Windows.
  • 2 specifica l'autenticazione password di Microsoft Entra, a partire da SQL Server 2022 (16.x) CU 6.
  • 3 specifica l'autenticazione integrata di Microsoft Entra, a partire da SQL Server 2022 (16.x) CU 6.
  • 4 specifica l'autenticazione del token Microsoft Entra, a partire da SQL Server 2022 (16.x) CU 6.

[ @publisher_login = ] N'publisher_login'

Account di accesso utilizzato per la connessione al server di pubblicazione. @publisher_login è sysname, con un valore predefinito .NULL @publisher_login deve essere specificato quando @publisher_security_mode è 0. Se @publisher_login è NULL e @publisher_security_mode è 1, l'account specificato in @job_login viene usato per la connessione al server di pubblicazione.

[ @publisher_password = ] N'publisher_password'

Password utilizzata per la connessione al server di pubblicazione. @publisher_password è sysname, con un valore predefinito .NULL

Importante

Non archiviare le informazioni di autenticazione nei file di script. Per migliorare la sicurezza, si consiglia di specificare nomi e password di accesso in fase di esecuzione.

[ @job_login = ] N'job_login'

Account di accesso per l'account con cui viene eseguito l'agente. In Istanza gestita di SQL di Azure usare un account SQL Server. @job_login è nvarchar(257), con il valore predefinito NULL. Questo account viene sempre usato per le connessioni dell'agente al server di distribuzione. È necessario specificare questo parametro per la creazione di un nuovo processo per l'agente snapshot.

Per i server di pubblicazione non SQL Server, questo deve essere lo stesso account di accesso specificato in sp_adddistpublisher (Transact-SQL).

[ @job_password = ] N'job_password'

Password per l'account di Windows con cui viene eseguito l'agente. @job_password è sysname, senza impostazione predefinita. È necessario specificare questo parametro per la creazione di un nuovo processo per l'agente snapshot.

Importante

Non archiviare le informazioni di autenticazione nei file di script. Per migliorare la sicurezza, si consiglia di specificare nomi e password di accesso in fase di esecuzione.

[ @publisher = ] N'publisher'

Specifica un server di pubblicazione non SQL Server. @publisher è sysname, con un valore predefinito .NULL

@publisher non deve essere usato durante la creazione di un agente di snapshot in un server di pubblicazione di SQL Server.

[ @distributor_security_mode = ] distributor_security_mode

Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.

[ @distributor_login = ] N'distributor_login'

Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.

[ @distributor_password = ] N'distributor_password'

Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.

Valori del codice restituito

0 (esito positivo) o 1 (errore).

Osservazioni:

sp_addpublication_snapshot viene usato nella replica snapshot, nella replica transazionale e nella replica di tipo merge.

Esempi

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

Autorizzazioni

Solo i membri del ruolo predefinito del server sysadmin o db_owner ruolo predefinito del database possono eseguire sp_addpublication_snapshot.