sp_adddynamicsnapshot_job (Transact-SQL)sp_adddynamicsnapshot_job (Transact-SQL)

S’APPLIQUE À : ouiSQL Server ouiAzure SQL Database (Managed Instance uniquement) nonAzure SQL Data Warehouse nonParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database (Managed Instance only) noAzure SQL Data Warehouse noParallel Data Warehouse

Crée un travail de l'Agent qui crée l'instantané de données filtrées pour une publication avec des filtres de lignes paramétrables.Creates an agent job that generates a filtered data snapshot for a publication with parameterized row filters. Cette procédure stockée est exécutée sur le serveur de publication dans la base de données de publication.This stored procedure is executed at the Publisher on the publication database. Un administrateur utilise cette procédure stockée pour créer manuellement des travaux d'instantané de données filtrées pour des Abonnés.This stored procedure is used by an administrator to manually create filtered data snapshot jobs for Subscribers.

Notes

Pour créer un travail d'instantané de données filtrées, un travail d'instantané standard doit déjà exister pour la publication.In order for a filtered data snapshot job to be created, a standard snapshot job for the publication must already exist.

Pour plus d'informations, voir Snapshots for Merge Publications with Parameterized Filters.For more information, see Snapshots for Merge Publications with Parameterized Filters.

Icône de lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

  
sp_adddynamicsnapshot_job [ @publication = ] 'publication'   
    [ , [ @suser_sname = ] 'suser_sname' ]   
    [ , [ @host_name = ] 'host_name' ]   
    [ , [ @dynamic_snapshot_jobname = ] 'dynamic_snapshot_jobname' OUTPUT ]   
    [ , [ @dynamic_snapshot_jobid = ] 'dynamic_snapshot_jobid' OUTPUT ]   
    [ , [ @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 ]  

ArgumentsArguments

[ @publication = ] 'publication'Nom de la publication à laquelle le travail d’instantané de données filtrées est ajouté.[ @publication = ] 'publication' Is the name of the publication to which the filtered data snapshot job is being added. publication est de type sysname, sans valeur par défaut.publication is sysname, with no default.

[ @suser_sname = ] 'suser_sname'Valeur utilisée lors de la création d’un instantané de données filtrées pour un abonnement filtré par la valeur de la fonction SUSER_SNAME sur l’abonné.[ @suser_sname = ] 'suser_sname' Is the value used when creating a filtered data snapshot for a subscription that is filtered by the value of the SUSER_SNAME function at the Subscriber. SUSER_SNAME est de type sysname, sans valeur par défaut.suser_sname is sysname, with no default. SUSER_SNAME doit avoir la valeur null si cette fonction n’est pas utilisée pour filtrer dynamiquement la publication.suser_sname should be NULL if this function is not used to dynamically filter the publication.

[ @host_name = ] 'host_name'Valeur utilisée lors de la création d’un instantané de données filtrées pour un abonnement filtré par la valeur de la fonction HOST_NAME sur l’abonné.[ @host_name = ] 'host_name' Is the value used when creating a filtered data snapshot for a subscription that is filtered by the value of the HOST_NAME function at the Subscriber. HOST_NAME est de type sysname, sans valeur par défaut.host_name is sysname, with no default. HOST_NAME doit avoir la valeur null si cette fonction n’est pas utilisée pour filtrer dynamiquement la publication.host_name should be NULL if this function is not used to dynamically filter the publication.

[ @dynamic_snapshot_jobname = ] 'dynamic_snapshot_jobname'Nom du travail d’instantané de données filtrées créé.[ @dynamic_snapshot_jobname = ] 'dynamic_snapshot_jobname' Is the name of the filtered data snapshot job created. dynamic_snapshot_jobname est de type sysname, avec NULL comme valeur par défaut. il s’agit d’un paramètre de sortie facultatif.dynamic_snapshot_jobname is sysname, with default of NULL, and is an optional OUTPUT parameter. S’il est spécifié, dynamic_snapshot_jobname doit être résolu en un travail unique sur le serveur de distribution.If specified, dynamic_snapshot_jobname must resolve to a unique job at the Distributor. S'il n'est pas spécifié, un nom de travail est automatiquement créé et renvoyé dans l'ensemble de résultats, où le nom est créé comme suit :If unspecified, a job name will be automatically generated and returned in the result set, where the name is created as follows:

'dyn_' + <name of the standard snapshot job> + <GUID>  

Notes

Lors de la création du nom du travail d'instantané dynamique, vous pouvez tronquer le nom du travail d'instantané standard.When generating the name of the dynamic snapshot job, you may truncate the name of the standard snapshot job.

[ @dynamic_snapshot_jobid = ] 'dynamic_snapshot_jobid'Identificateur du travail d’instantané de données filtrées créé.[ @dynamic_snapshot_jobid = ] 'dynamic_snapshot_jobid' Is an identifier for the filtered data snapshot job created. dynamic_snapshot_jobid est de type uniqueidentifier, avec NULL comme valeur par défaut. il s’agit d’un paramètre de sortie facultatif.dynamic_snapshot_jobid is uniqueidentifier, with default of NULL, and is an optional OUTPUT parameter.

[ @frequency_type = ] frequency_typeFréquence de planification du travail d’instantané de données filtrées.[ @frequency_type = ] frequency_type Is the frequency with which to schedule the filtered data snapshot job. frequency_type est de type intet peut prendre l’une des valeurs suivantes.frequency_type is int, and can be one of these values.

ValueValue DescriptionDescription
11 Une foisOne time
22 À la demandeOn demand
4 (par défaut)4 (default) Tous les joursDaily
88 SemaineWeekly
1616 MoisMonthly
3232 Mensuelle relativeMonthly relative
6464 Démarrage automatiqueAutostart
128128 PériodiqueRecurring

[ @frequency_interval = ] frequency_intervalPériode (exprimée en jours) pendant laquelle le travail d’instantané de données filtrées est exécuté.[ @frequency_interval = ] frequency_interval Is the period (measured in days) when the filtered data snapshot job is executed. frequency_interval est de type int, avec 1 comme valeur par défaut et dépend de la valeur de frequency_type.frequency_interval is int, with a default value of 1, and depends on the value of frequency_type.

Valeur de frequency_typeValue of frequency_type Effet sur frequency_intervalEffect on frequency_interval
11 frequency_interval n’est pas utilisé.frequency_interval is unused.
4 (par défaut)4 (default) Tous les frequency_interval jours, avec une valeur par défaut quotidienne.Every frequency_interval days, with a default of daily.
88 frequency_interval est une ou plusieurs des valeurs suivantes (combinées avec un | (opérateur) (logique or au) niveau du bit ):frequency_interval is one or more of the following (combined with a | (Bitwise OR) (Transact-SQL) logical operator):

1 = dimanche | 2 = lundi | 4 = mardi | 8 = mercredi | 16 = jeudi | 32 = vendredi | 64 = samedi1 = Sunday | 2 = Monday | 4 = Tuesday | 8 = Wednesday | 16 = Thursday | 32 = Friday | 64 = Saturday
1616 Le frequency_interval jour du mois.On the frequency_interval day of the month.
3232 frequency_interval est l’un des éléments suivants:frequency_interval is one of the following:

1 = dimanche | 2 = lundi | 3 = mardi | 4 = mercredi | 5 = jeudi | 6 = vendredi | 7 = samedi | 8 = jour | 9 = jour | de semaine 10 = jour de week-end1 = Sunday | 2 = Monday | 3 = Tuesday | 4 = Wednesday | 5 = Thursday | 6 = Friday | 7 = Saturday | 8 = Day | 9 = Weekday | 10 = Weekend day
6464 frequency_interval n’est pas utilisé.frequency_interval is unused.
128128 frequency_interval n’est pas utilisé.frequency_interval is unused.

[ @frequency_subday = ] frequency_subdaySpécifie les unités pour frequency_subday_interval.[ @frequency_subday = ] frequency_subday Specifies the units for frequency_subday_interval. frequency_subday est de type intet peut prendre l’une des valeurs suivantes.frequency_subday is int, and can be one of these values.

ValueValue DescriptionDescription
11 Une foisOnce
22 SecondeSecond
4 (par défaut)4 (default) MinuteMinute
88 HeureHour

[ @frequency_subday_interval = ] frequency_subday_intervalNombre de périodes frequency_subday entre chaque exécution du travail.[ @frequency_subday_interval = ] frequency_subday_interval Is the number of frequency_subday periods that occur between each execution of the job. frequency_subday_interval est de type int, avec 5 comme valeur par défaut.frequency_subday_interval is int, with a default of 5.

[ @frequency_relative_interval = ] frequency_relative_intervalEst l’occurrence du travail d’instantané de données filtrées dans chaque mois.[ @frequency_relative_interval = ] frequency_relative_interval Is the occurrence of the filtered data snapshot job in each month. Ce paramètre est utilisé lorsque frequency_type a la valeur 32 (mensuelle relative).This parameter is used when frequency_type is set to 32 (monthly relative). frequency_relative_interval est de type intet peut prendre l’une des valeurs suivantes.frequency_relative_interval is int, and can be one of these values.

ValueValue DescriptionDescription
1 (par défaut)1 (default) PremièreFirst
22 SecondeSecond
44 TroisièmeThird
88 QuatrièmeFourth
1616 DernièreLast

[ @frequency_recurrence_factor = ] frequency_recurrence_factorFacteur de récurrence utilisé par frequency_type.[ @frequency_recurrence_factor = ] frequency_recurrence_factor Is the recurrence factor used by frequency_type. frequency_recurrence_factor est de type int, avec 0 comme valeur par défaut.frequency_recurrence_factor is int, with a default of 0.

[ @active_start_date = ] active_start_dateDate à laquelle le travail d’instantané de données filtrées est planifié pour la première fois, au format AAAAMMJJ.[ @active_start_date = ] active_start_date Is the date when the filtered data snapshot job is first scheduled, formatted as YYYYMMDD. active_start_date est de type int, avec NULL comme valeur par défaut.active_start_date is int, with a default of NULL.

[ @active_end_date = ] active_end_dateDate à laquelle le travail d’instantané de données filtrées cesse d’être planifié, au format AAAAMMJJ.[ @active_end_date = ] active_end_date Is the date when the filtered data snapshot job stops being scheduled, formatted as YYYYMMDD. active_end_date est de type int, avec NULL comme valeur par défaut.active_end_date is int, with a default of NULL.

[ @active_start_time_of_day = ] active_start_time_of_dayHeure de la journée à laquelle le travail d’instantané de données filtrées est planifié pour la première fois, au format HHMMSS.[ @active_start_time_of_day = ] active_start_time_of_day Is the time of day when the filtered data snapshot job is first scheduled, formatted as HHMMSS. active_start_time_of_day est de type int, avec NULL comme valeur par défaut.active_start_time_of_day is int, with a default of NULL.

[ @active_end_time_of_day = ] active_end_time_of_dayHeure de la journée à laquelle le travail d’instantané de données filtrées cesse d’être planifié, au format HHMMSS.[ @active_end_time_of_day = ] active_end_time_of_day Is the time of day when the filtered data snapshot job stops being scheduled, formatted as HHMMSS. active_end_time_of_day est de type int, avec NULL comme valeur par défaut.active_end_time_of_day is int, with a default of NULL.

Jeu de résultatsResult Set

Nom de la colonneColumn name Type de donnéesData type DescriptionDescription
idid Intint Identifie le travail d’instantané de données filtrées dans la table système MSdynamicsnapshotjobs .Identifies the filtered data snapshot job in the MSdynamicsnapshotjobs system table.
dynamic_snapshot_jobnamedynamic_snapshot_jobname sysnamesysname Nom du travail d'instantané de données filtrées.Name of the filtered data snapshot job.
dynamic_snapshot_jobiddynamic_snapshot_jobid uniqueidentifieruniqueidentifier Identifie de façon unique MicrosoftMicrosoft le SQL ServerSQL Server travail de l’agent sur le serveur de distribution.Uniquely identifies the MicrosoftMicrosoft SQL ServerSQL Server Agent job at the Distributor.

Valeurs des codes de retourReturn Code Values

0 (réussite) ou 1 (échec)0 (success) or 1 (failure)

NotesRemarks

sp_adddynamicsnapshot_job est utilisé dans la réplication de fusion pour les publications qui utilisent un filtre paramétré.sp_adddynamicsnapshot_job is used in merge replication for publications that use a parameterized filter.

ExempleExample

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

--Add a new merge publication.
DECLARE @publicationdb AS sysname;
DECLARE @publication AS sysname;
DECLARE @table1 AS sysname;
DECLARE @table2 AS sysname;
DECLARE @filter AS sysname;
DECLARE @schema_hr AS sysname;
DECLARE @schema_sales AS sysname;

SET @publicationdb = N'AdventureWorks2012';
SET @publication = N'AdvWorksSalesPersonMerge';
SET @table1 = N'Employee';
SET @table2 = N'SalesPerson';
SET @filter = N'SalesPerson_Employee';
SET @schema_hr = N'HumanResources';
SET @schema_sales = N'Sales';

USE [AdventureWorks2012];

-- Enable AdventureWorks2012 for merge replication.
EXEC sp_replicationdboption
  @dbname = @publicationdb,
  @optname = N'merge publish',
  @value = N'true';  

-- Create new merge publication.  
EXEC sp_addmergepublication 
  @publication = @publication, 
  @description = N'Merge publication of AdventureWorks2012.', 
  @allow_subscriber_initiated_snapshot = N'false';

-- Create a new snapshot job for the publication, using the 
-- default schedule. Pass credentials at runtime using 
-- sqlcmd scripting variables.
EXEC sp_addpublication_snapshot 
  @publication = @publication, 
  @job_login = $(Login), 
  @job_password = $(password);

-- Add an article for the Employee table, 
-- which is horizontally partitioned using 
-- a parameterized row filter.
EXEC sp_addmergearticle 
  @publication = @publication, 
  @article = @table1, 
  @source_owner = @schema_hr, 
  @source_object = @table1, 
  @type = N'table', 
  @description = 'contains employee information', 
  @subset_filterclause = N'[LoginID] = HOST_NAME()';

-- Add an article for the SalesPerson table, 
-- which is partitioned based on a join filter.
EXEC sp_addmergearticle 
  @publication = @publication, 
  @article = @table2, 
  @source_owner = @schema_sales, 
  @source_object = @table2, 
  @type = N'table', 
  @description = 'contains customer information';

-- Add a join filter between the two articles.
EXEC sp_addmergefilter 
  @publication = @publication, 
  @article = @table1, 
  @filtername = @filter, 
  @join_articlename = @table2, 
  @join_filterclause = N'[Employee].[BusinessEntityID] = [SalesPerson].[SalesPersonID]', 
  @join_unique_key = 1, 
  @filter_type = 1;
GO

-- Start the snapshot agent job.
DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesPersonMerge';

EXEC sp_startpublication_snapshot 
  @publication = @publication;
GO

PRINT '*** Waiting for the initial snapshot.';
GO

-- Create a temporary table to store the filtered data snapshot 
-- job information.
CREATE TABLE #temp (id int,
    job_name sysname,
    job_id uniqueidentifier,
    dynamic_filter_login sysname NULL,
    dynamic_filter_hostname sysname NULL,
    dynamic_snapshot_location nvarchar(255),
    frequency_type int, 
    frequency_interval int, 
    frequency_subday_type int,
    frequency_subday_interval int, 
    frequency_relative_interval int, 
    frequency_recurrence_factor int, 
    active_start_date int, 
    active_end_date int, 
    active_start_time int, 
    active_end_time int
)

-- Create each snapshot for a partition 
-- The initial snapshot must already be generated.
DECLARE @publication AS sysname;
DECLARE @jobname AS sysname
DECLARE @hostname AS sysname
SET @publication = N'AdvWorksSalesPersonMerge';
SET @hostname = N'adventure-works\Fernando';

WHILE NOT EXISTS(SELECT * FROM sysmergepublications 
    WHERE [name] = @publication 
    AND snapshot_ready = 1)
BEGIN
    WAITFOR DELAY '00:00:05'
END

-- Create a data partition by overriding HOST_NAME().
EXEC sp_addmergepartition 
  @publication = @publication,
  @host_name = @hostname;

-- Create the filtered data snapshot job, and use the returned 
-- information to start the job.
EXEC sp_adddynamicsnapshot_job 
  @publication = @publication,
  @host_name = @hostname;

INSERT INTO #temp (id, job_name, job_id, dynamic_filter_login,
    dynamic_filter_hostname, dynamic_snapshot_location,
    frequency_type,	frequency_interval, frequency_subday_type,
    frequency_subday_interval, frequency_relative_interval, 
    frequency_recurrence_factor, active_start_date,	active_end_date, 
    active_start_time,active_end_time)
EXEC sp_helpdynamicsnapshot_job;

SELECT @jobname = (SELECT DISTINCT job_name FROM #temp WHERE dynamic_filter_hostname = @hostname);

EXEC msdb..sp_start_job @job_name = @jobname;
DROP TABLE #temp;
GO

AutorisationsPermissions

Seuls les membres du rôle serveur fixe sysadmin ou du rôle de base de données fixe db_owner peuvent exécuter sp_adddynamicsnapshot_job.Only members of the sysadmin fixed server role or the db_owner fixed database role can execute sp_adddynamicsnapshot_job.

Voir aussiSee Also

Créer un instantané pour une publication de fusion avec des filtres paramétrés Create a Snapshot for a Merge Publication with Parameterized Filters
Parameterized Row Filters Parameterized Row Filters
sp_dropdynamicsnapshot_job (Transact-SQL) sp_dropdynamicsnapshot_job (Transact-SQL)
sp_helpdynamicsnapshot_job (Transact-SQL)sp_helpdynamicsnapshot_job (Transact-SQL)