Partager via


Procédure pas à pas : approvisionnement d'une base de données client avec une étendue filtrée

Dans cette procédure pas à pas, vous allez créer une application console qui approvisionne la base de données SQL Express SyncExpressDB avec des artefacts liés à l'étendue de synchronisation OrdersScope-NC. Pour l'essentiel, le processus d'approvisionnement prépare la base de données client pour la synchronisation des données relatives à l'étendue OrdersScope-NC avec la base de données serveur. Pour obtenir des détails approfondis sur l'approvisionnement des clients, consultez Provisioning the Clients et pour obtenir des détails sur les étendues filtrées, consultez Procédure : filtrer des données pour la synchronisation de bases de données (SQL Server).

Pour approvisionner une base de données SQL Express

La liste suivante contient les étapes pour créer une application console à l'aide de Visual Studio pour approvisionner la base de données SQL Express SyncExpressDB avec des artefacts liés à l'étendue de synchronisation OrdersScope-NC.

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur Solution ‘SyncSQLServerAndSQLExpress’, pointez sur Ajouter, puis cliquez sur Nouveau projet.

  2. Sélectionnez Visual C# dans Types de projet et Application console dans Modèles.

  3. Tapez ProvisionFilteredScopeClient pour Nom du projet.

  4. Cliquez sur OK pour fermer la boîte de dialogue Nouveau projet.

  5. Dans la fenêtre Explorateur de solutions, cliquez avec le bouton droit sur ProvisionFilteredScopeClient, puis cliquez sur Ajouter une référence.

  6. Sélectionnez Microsoft.Synchronization, Microsoft.Synchornization.Data, Microsoft.Synchronization.Data.SqlServer, et cliquez sur OK pour fermer la boîte de dialogue Ajouter une référence.

  7. Ajoutez les instructions using suivantes au début du fichier Program.cs après les instructions using existantes.

    using System.Data;
    using System.Data.SqlClient;
    
    using Microsoft.Synchronization;
    using Microsoft.Synchronization.Data;
    using Microsoft.Synchronization.Data.SqlServer;
    
  8. Ajoutez l'instruction suivante à la méthode Main pour créer une connexion SQL à la base de données Express.

    SqlConnection clientConn = new SqlConnection(@"Data Source=.\SQLEXPRESS; Initial Catalog=SyncExpressDB; Trusted_Connection=Yes");
    
  9. Ajoutez l'instruction suivante à la méthode Main pour créer une connexion SQL à la base de données serveur.

    SqlConnection serverConn = new SqlConnection("Data Source=localhost; Initial Catalog=SyncDB; Integrated Security=True");
    

    Important

    Dans l'instruction ci-dessus, remplacez le nom du serveur par le nom d'instance de votre serveur, si vous n'utilisez pas l'instance par défaut. Par exemple, si votre instance SQL Server se nomme MYSQLINSTANCE, remplacez (local) par .\MYSQLINSTANCE.

  10. Ajoutez l'instruction suivante à la méthode Main pour obtenir la description de l'étendue OrdersScope-NC du serveur SQL Server. Cette instruction appelle la méthode GetDescriptionForScope(String, SqlCeConnection) sur la classe SqlSyncDescriptionBuilder pour récupérer la description de OrdersScope-NC du serveur.

    La classe DbSyncScopeDescription permet de spécifier le nom de l'étendue de synchronisation et la liste des tables à synchroniser. Ces informations peuvent être spécifiées de manière explicite ou obtenues en interrogeant la base de données à l'aide de la méthode GetDescriptionForScope(String, String, SqlConnection). Dans cette procédure pas à pas, vous allez utiliser la méthode GetDescriptionForScope(String, String, SqlConnection) de la classe SqlSyncDescriptionBuilder pour récupérer la description de l'étendue du serveur.

    // get description for the OrdersScope-NC scope from the SyncDB server database
    DbSyncScopeDescription scopeDesc = SqlSyncDescriptionBuilder.GetDescriptionForScope("OrdersScope-NC", serverConn);
    
  11. Ajoutez les instructions suivantes pour approvisionner la base de données SyncExpressDB avec des artefacts liés à la synchronisation. Ce code crée un objet SqlCeSyncScopeProvisioning, définit l'indicateur pour créer la table Orders sur la base de données client, puis exécute le processus d'approvisionnement pour ajouter des artefacts liés à l'étendue au client. Les étapes de niveau supérieur pour l'approvisionnement d'une base de données SQL Express avec des artefacts liés à l'étendue de synchronisation sont les suivantes :

    1. Créez une instance de la classe SqlCeSyncScopeProvisioning basée sur la DbSyncScopeDescription obtenue à l'étape précédente et une connexion à la base de données SQL Express. La classe SqlCeSyncScopeProvisioning représente l'approvisionnement d'une base de données SQL Express pour une étendue particulière représentée par un objet DbSyncScopeDescription.

    2. Appelez la méthode Apply()()()() sur l'objet SqlCeSyncScopeProvisioning pour démarrer le processus d'approvisionnement, qui crée l'infrastructure de suivi des modifications dans la base de données SyncExpressDB.

      Notes

      Vous n'avez pas besoin d'appeler la méthode SetCreateTableDefault(DbSyncCreationOption) explicitement avec la valeur DbSyncCreationOption en tant que CreateOrUseExisting car CreateOrUseExisting est la valeur par défaut utilisée par Sync Framework. La table Products est créée automatiquement dans la base de données Compact lors du processus d'approvisionnement. La méthode SetCreateTableDefault(DbSyncCreationOption) permet de spécifier s'il convient de créer des tables de base lors de la configuration d'une étendue.

    // create a provisioning object 
    SqlSyncScopeProvisioning clientProvision = new SqlSyncScopeProvisioning(clientConn, scopeDesc);
    
    // start the provisioning process
    clientProvision.Apply();
    
  12. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur ProvisionFilteredScopeClient, puis cliquez sur Générer.

  13. Dans l'Explorateur de solutions, cliquez à nouveau avec le bouton droit sur ProvisionFilteredScopeClient, puis cliquez sur Définir comme projet de démarrage.

  14. Appuyez sur Ctrl+F5 pour exécuter le programme.

  15. Appuyez sur ENTRÉE pour fermer la fenêtre d'invite de commandes.

  16. Dans SQL Server Management Studio, cliquez avec le bouton droit sur .\SQLEXPRESS, puis cliquez sur Actualiser.

  17. Développez le nœud .\SQLEXPRESS, développez Bases de données, développez SyncExpressDB, développez Tables et les tables créées par le processus d'approvisionnement doivent apparaître. D'autres objets, tels que les déclencheurs et procédures stockées, créés par le processus d'approvisionnement sont également présents.

  18. Gardez Visual Studio et SQL Server Management Studio ouverts.

Exemple de code complet

using System;
using System.Data;
using System.Data.SqlClient;

using Microsoft.Synchronization;
using Microsoft.Synchronization.Data;
using Microsoft.Synchronization.Data.SqlServer;

namespace ProvisionFilteredScopeClient
{
    class Program
    {
        static void Main(string[] args)
        {
            // create connection to the SQL Express database
            SqlConnection clientConn = new SqlConnection(@"Data Source=.\SQLEXPRESS; Initial Catalog=SyncExpressDB; Trusted_Connection=Yes");

            // create connection to the server database
            SqlConnection serverConn = new SqlConnection("Data Source=localhost; Initial Catalog=SyncDB; Integrated Security=True");

            // get description for the OrdersScope-NC scope from the SyncDB server database
            DbSyncScopeDescription scopeDesc = SqlSyncDescriptionBuilder.GetDescriptionForScope("OrdersScope-NC", serverConn);

            // create a provisioning object 
            SqlSyncScopeProvisioning clientProvision = new SqlSyncScopeProvisioning(clientConn, scopeDesc);

            // create table if it does not already exist in the SyncExpressDB database
            clientProvision.SetCreateTableDefault(DbSyncCreationOption.CreateOrUseExisting);

            // start the provisioning process
            clientProvision.Apply();
        }
    }
}

Voir aussi

Autres ressources

Procédure : filtrer des données pour la synchronisation de bases de données (SQL Server)