Partager via


sp_addpublication_snapshot (Transact-SQL)

Crée l'Agent de capture instantanée pour la publication spécifiée. Cette procédure stockée est exécutée au niveau du serveur de publication dans la base de données de publication.

Remarque relative à la sécuritéRemarque relative à la sécurité

 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 devriez 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 Chiffrement des connexions à SQL Server.

Icône Lien de rubriqueConventions de syntaxe Transact-SQL

Syntaxe

sp_addpublication_snapshot [ @publication= ] '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 = ] 'snapshot_agent_name' ]
    [ , [ @publisher_security_mode = ] publisher_security_mode ]
    [ , [ @publisher_login = ] 'publisher_login' ]
    [ , [ @publisher_password = ] 'publisher_password' ] 
    [ , [ @job_login = ] 'job_login' ]
    [ , [ @job_password = ] 'job_password' ]
    [ , [ @publisher = ] 'publisher' ]

Arguments

  • [ @publication=] 'publication'
    Nom de la publication. publication est de type sysname, sans valeur par défaut.

  • [ @frequency_type=] frequency_type
    Fréquence d'exécution de l'Agent de capture instantanée. frequency_type est de type int et peut prendre l'une des valeurs suivantes.

    Valeur

    Description

    1

    Une seule fois.

    4 (par défaut)

    Tous les jours.

    8

    Toutes les semaines.

    16

    Tous les mois.

    32

    Tous les mois, en fonction de l'intervalle de fréquence.

    64

    Au démarrage de l'Agent SQL Server.

    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 de type int et peut avoir l'une des valeurs suivantes.

    Valeur de frequency_type

    Effet sur frequency_interval

    1

    frequency_interval n'est pas utilisé.

    4 (par défaut)

    Tous les frequency_interval jours, la valeur par défaut étant tous les jours.

    8

    frequency_interval prend une ou plusieurs des valeurs suivantes (combinées avec un opérateur logique | (OR au niveau du bit)) :

    1 = Dimanche |

    2 = Lundi |

    4 = Mardi |

    8 = Mercredi |

    16 = Jeudi |

    32 = Vendredi |

    64 = Samedi

    16

    Le jour du mois défini par l'argument frequency_interval.

    32

    frequency_interval prend l'une des valeurs suivantes :

    1 = Dimanche |

    2 = Lundi |

    3 = Mardi |

    4 = Mercredi |

    5 = Jeudi |

    6 = Vendredi |

    7 = Samedi |

    8 = Jour |

    9 = Jour de semaine |

    10 = Jour de 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 de type int et peut prendre l'une des valeurs suivantes.

    Valeur

    Description

    1

    Une fois

    2

    Seconde

    4 (par défaut)

    Minute

    8

    Heure

  • [ @frequency_subday_interval=] frequency_subday_interval
    Intervalle de frequency_subday. frequency_subday_interval est de type int, avec 5 comme valeur par défaut (= toutes les 5 minutes).

  • [ @frequency_relative_interval=] frequency_relative_interval
    Date d'exécution de l'Agent de capture instantanée. frequency_relative_interval est de type int, avec 1 comme valeur par défaut.

  • [ @frequency_recurrence_factor=] frequency_recurrence_factor
    Facteur de récurrence utilisé par frequency_type. frequency_recurrence_factor est de type int, avec 0 comme valeur par défaut.

  • [ @active_start_date=] active_start_date
    Date à laquelle l'Agent de capture instantanée est planifié pour la première fois, représentée au format AAAAMMJJ. active_start_date est de type int, avec 0 comme valeur par défaut.

  • [ @active_end_date=] active_end_date
    Date à laquelle l'Agent de capture instantanée cesse d'être planifié, représentée au format AAAAMMJJ. active_end_date est de type int, avec 99991231 comme valeur par défaut (ce qui correspond au 31 décembre 9999).

  • [ @active_start_time_of_day=] active_start_time_of_day
    Heure de la journée à laquelle l'Agent de capture instantanée est planifié pour la première fois, représentée au format HHMMSS. active_start_time_of_day est de type int, avec 0 comme valeur par défaut.

  • [ @active_end_time_of_day=] active_end_time_of_day
    Heure de la journée à laquelle l'Agent de capture instantanée cesse d'être planifié, représentée au format HHMMSS. active_end_time_of_day est de type int, avec 235959 comme valeur par défaut (ce qui correspond à 23:59:59 avec un affichage horaire au format 24 heures).

  • [ @snapshot_job_name = ] 'snapshot_agent_name'
    Nom d'un travail de l'Agent de capture instantanée en cas d'utilisation d'un travail existant. snapshot_agent_name est de type nvarchar(100), avec NULL comme valeur par défaut. Ce paramètre est réservé à un usage interne et ne doit pas être spécifié lors de la création d'une nouvelle publication. Si snapshot_agent_name est spécifié, la valeur de job_login et de job_password doit être NULL.

  • [ @publisher_security_mode= ] publisher_security_mode
    Mode de sécurité utilisé par l'Agent lors de la connexion au serveur de publication. publisher_security_mode est de type smallint, avec 1 comme valeur par défaut. 0 spécifie l'authentification SQL Server et 1 l'authentification Windows. La valeur 0 doit être spécifiée pour les serveurs de publication non-SQL Server. Lorsque c'est possible, utilisez l'authentification Windows.

  • [ @publisher_login= ] 'publisher_login'
    Nom de connexion utilisé pour se connecter au serveur de publication. publisher_login est de type sysname, avec NULL comme valeur par défaut. L'argument publisher_login doit être spécifié lorsque publisher_security_mode a la valeur 0. Si publisher_login prend la valeur NULL et que publisher_security_modeest défini sur 1, le compte Windows spécifié dans job_login est utilisé lors de la connexion au serveur de publication.

  • [ @publisher_password= ] 'publisher_password'
    Mot de passe utilisé pour se connecter au serveur de publication. publisher_password est de type sysname, avec NULL comme valeur par défaut.

    Remarque relative à la sécuritéRemarque relative à la sécurité

    Ne stockez pas d'informations d'authentification dans des 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= ] 'job_login'
    Nom de connexion du compte Windows sous lequel l'Agent s'exécute. job_login est de type nvarchar(257), avec NULL comme valeur par défaut. Ce compte Windows est toujours utilisé pour les connexions de l'Agent au serveur de distribution. Vous devez spécifier ce paramètre lors de la création d'un nouveau travail de l'Agent de capture instantanée.

    [!REMARQUE]

    Pour les serveurs de publication non-SQL Server, le nom de connexion doit être identique à celui défini dans sp_adddistpublisher (Transact-SQL).

  • [ @job_password= ] 'job_password'
    Mot de passe du compte Windows sous lequel l'Agent s'exécute. job_password est de type sysname, avec NULL comme valeur par défaut. Vous devez fournir ce paramètre lorsque vous créez un travail d'Agent de capture instantanée. Si job_password est NULL et si l'utilisateur qui crée la capture instantanée est sysadmin, le paramètre prend par défaut la valeur du compte sous lequel l'Agent SQL Server s'exécute.

    Remarque relative à la sécuritéRemarque relative à la sécurité

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

  • [ @publisher= ] 'publisher'
    Spécifie un serveur de publication non-SQL Server. publisher est de type sysname, avec NULL comme valeur par défaut.

    [!REMARQUE]

    publisher ne doit pas être utilisé lors de la création d'un Agent de capture instantanée sur un serveur de publication SQL Server.

Valeurs des codes de retour

0 (succès) ou 1 (échec)

Notes

sp_addpublication_snapshot est utilisée dans la réplication transactionnelle, de capture instantanée et de fusion.

Exemple

-- 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 du rôle de base de données fixe db_owner peuvent exécuter sp_addpublication_snapshot.