Partager via


Procédure pas à pas : approvisionnement d'un client SQL Express

Dans cette procédure pas à pas, vous allez créer une base de données SQL Express nommée SyncExpressDB, puis une application console qui approvisionne la base de données avec des artefacts liés à ProductsScope. Le processus d'approvisionnement prépare la base de données client pour la synchronisation avec le serveur. Dans la procédure pas à pas précédente, Procédure pas à pas : définition d'une étendue et approvisionnement d'une base de données serveur, vous avez déjà approvisionné la base de données serveur avec des artefacts liés à la synchronisation. . Pour obtenir des détails techniques approfondis sur l'approvisionnement, consultez Provisioning the Clients et Approvisionnement pour la synchronisation (SQL Server).

Créer une base de données SQL Server Express

La liste suivante contient les étapes pour créer un exemple de base de données SQL Server Express.

  1. Dans SQL Server Management Studio, cliquez sur le menu Fichier, puis sur Connecter l'Explorateur d'objets.

  2. Dans la boîte de dialogue Se connecter au serveur, sélectionnez Moteur de base de données comme Type de serveur.

  3. Sélectionnez .\SQLEXPRESS comme nom de serveur.

    Conseil

    Si le nom de la base de données SQL Express sur votre ordinateur est différent, indiquez ce nom à la place.

  4. Spécifiez les informations d'identification appropriées et cliquez sur Se connecter pour vous connecter à la base de données SQL Express.

  5. Cliquez avec le bouton droit sur Bases de données dans la fenêtre Explorateur d'objets, puis cliquez sur Nouvelle base de données.

  6. Tapez SyncExpressDB comme nom de base de données, puis cliquez sur OK.

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

  1. Dans Visual Studio, 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 ProvisionClient 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 ProvisionClient, 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.

    // create a connection to the SyncExpressDB database
    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.

    // create a connection to the SyncDB server database
    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 ProductsScope du serveur SQL Server. Cette instruction appelle la méthode GetDescriptionForScope(String, SqlConnection) sur la classe SqlSyncDescriptionBuilder pour récupérer la description de ProductsScope 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 the description of ProductsScope from the SyncDB server database
    DbSyncScopeDescription scopeDesc = SqlSyncDescriptionBuilder.GetDescriptionForScope("ProductsScope", serverConn);
    
  11. Ajoutez les instructions suivantes pour approvisionner la base de données SQL Express avec des artefacts liés à ProductsScope. 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 SqlSyncScopeProvisioning basée sur la DbSyncScopeDescription obtenue à l'étape précédente et une connexion à la base de données SQL Express. La classe SqlSyncScopeProvisioning 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 SqlSyncScopeProvisioning pour démarrer le processus d'approvisionnement, qui crée l'infrastructure de suivi des modifications dans la base de données SQL Express.

      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 server provisioning object based on the ProductsScope
    SqlSyncScopeProvisioning clientProvision = new SqlSyncScopeProvisioning(clientConn, scopeDesc);
    
    // starts the provisioning process
    clientProvision.Apply();
    
  12. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur ProvisionClient, puis cliquez sur Générer.

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

    Avertissement

    Si vous ne définissez pas le projet actuel comme projet de démarrage et appuyez à nouveau sur Ctrl+F5, l'application ProvisionServer est exécutée une nouvelle fois et vous obtenez un message d'erreur semblable au suivant : « étendue qui existe déjà dans la base de données serveur ».

  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, développez .\SQLEXPRESS, Bases de données, SyncExpressDB, Tables et les tables supplémentaires suivantes créées par le processus d'approvisionnement doivent apparaître : Products_Tracking, schema_info, scope_config et scope_info. D'autres objets, tels que les déclencheurs et procédures stockées, créés par le processus d'approvisionnement sont également présents.

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

Exemple de code complet

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

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

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

namespace ProvisionClient
{
    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 a connection to the SyncDB server database
            SqlConnection serverConn = new SqlConnection("Data Source=localhost; Initial Catalog=SyncDB; Integrated Security=True");

            // get the description of ProductsScope from the SyncDB server database
            DbSyncScopeDescription scopeDesc = SqlSyncDescriptionBuilder.GetDescriptionForScope("ProductsScope", serverConn);

            // create server provisioning object based on the ProductsScope
            SqlSyncScopeProvisioning clientProvision = new SqlSyncScopeProvisioning(clientConn, scopeDesc);

            // create Products table if the table does not already exist
            clientProvision.SetCreateTableDefault(DbSyncCreationOption.CreateOrUseExisting);

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

Voir aussi

Autres ressources

Approvisionnement pour la synchronisation (SQL Server)