Partager via


Procédure pas à pas : définition d'une étendue et approvisionnement d'une base de données serveur

Pour préparer la base de données serveur pour la synchronisation, vous devez décrire une étendue de synchronisation et approvisionner la base de données serveur avec des artefacts liés à l'étendue.

En décrivant une étendue de synchronisation, vous définissez ce que vous voulez synchroniser. Une étendue de synchronisation est un ensemble de tables qui doivent être synchronisées comme une seule unité. Les tables peuvent déjà exister dans la base de données ou être décrites à l'aide du modèle objet Sync Framework, puis générées au moment de l'exécution lorsque le magasin sous-jacent est approvisionné. Dans cette procédure pas à pas, vous allez utiliser la table Products qui existe déjà dans la base de données serveur.

L'approvisionnement d'une base de données implique l'ajout d'artefacts liés à l'étendue de synchronisation, tels que des tables de suivi, déclencheurs et procédures stockées, à la base de données. Ces artefacts sont utilisés par le processus de synchronisation au moment de l'exécution. La table de base peut éventuellement être aussi ajoutée à la base de données comme indiqué dans le paragraphe précédent. Pour obtenir des détails techniques approfondis sur l'approvisionnement, consultez Procédure : configurer et exécuter la synchronisation de bases de données (SQL Server) et Approvisionnement pour la synchronisation (SQL Server).

Dans cette procédure pas à pas, vous allez créer une application console qui définit une étendue de synchronisation nommée ProductsScope, qui inclut la table Products et approvisionne la base de données SQL Server que vous avez créée dans la procédure pas à pas précédente avec des artefacts liés à l'étendue de synchronisation.

Pour définir une étendue et approvisionner le serveur avec des artefacts liés à l'étendue

  1. Lancez Visual Studio 2008 : cliquez sur Démarrer, pointez sur Programmes, sur Microsoft Visual Studio 2008, puis cliquez sur Microsoft Visual Studio 2008.

  2. Cliquez sur Fichier dans la barre de menus, pointez sur Nouveau, puis cliquez sur Projet.

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

  4. Tapez ProvisionServer pour Nom du projet, C:\ pour Emplacement et SyncSQLServerAndSQLExpress pour Nom de solution.

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

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

  7. Sélectionnez Microsoft.Synchronization, Microsoft.Synchornization.Data, Microsoft.Synchronization.Data.SqlServer sous l'onglet .NET. Il s'agit des assemblys fournis avec Microsoft Sync Framework.

  8. Cliquez sur OK pour fermer la boîte de dialogue Ajouter une référence.

  9. Ajoutez les instructions using suivantes au début du fichier Program.cs après les instructions using existantes. Ces espaces de noms contiennent les classes que vous utiliserez dans le code pour cette application console.

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

    // connect to 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.

  11. Ajoutez les lignes de code suivantes à la méthode Main pour définir une étendue de synchronisation basée sur la table Products dans la base de données SyncDB. Ce code crée l'étendue de synchronisation ProductsScope, obtient la description de la table Products dans la base de données SyncDB, puis ajoute la description à ProductsScope. Les étapes de niveau supérieur pour la définition d'une étendue de synchronisation sont les suivantes :

    1. Créez une instance de la classe DbSyncScopeDescription. La classe DbSyncScopeDescription permet de spécifier le nom de l'étendue de synchronisation et la liste des tables à synchroniser. Les tables sont spécifiées à l'aide de la classe DbSyncTableDescription.

    2. Créez une instance de la classe DbSyncTableDescription basée sur le schéma de la table Products récupérée à partir de la base de données serveur SyncDB. La classe DbSyncTableDescription permet de spécifier le nom de la table, les colonnes de la table à synchroniser, les types de données de la table et d'autres informations requises pour la synchronisation. 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 GetDescriptionForTable(String, SqlConnection).

      Dans cette procédure pas à pas, vous allez utiliser la méthode GetDescriptionForTable(String, SqlConnection) de la classe SqlSyncDescriptionBuilder pour récupérer la description de la table.

    3. Ajoutez l'objet DbSyncTableDescription à la collection Tables de l'objet DbSyncScopeDescription à l'aide de la méthode Add.

    // define a new scope named ProductsScope
    DbSyncScopeDescription scopeDesc = new DbSyncScopeDescription("ProductsScope");
    
    // get the description of the Products table from SyncDB dtabase
    DbSyncTableDescription tableDesc = SqlSyncDescriptionBuilder.GetDescriptionForTable("Products", serverConn);
    
    // add the table description to the sync scope definition
    scopeDesc.Tables.Add(tableDesc);
    
  12. Ajoutez les lignes de code suivantes à la méthode Main pour approvisionner SQL Server avec des artefacts liés à la synchronisation. Ce code crée un objet SqlSyncScopeProvisioning, ignore la création de la table Products sur le serveur puisque la table existe déjà, puis approvisionne la base de données SyncDB avec des artefacts liés à l'étendue. Les étapes de niveau supérieur pour l'approvisionnement de la base de données serveur avec des artefacts liés à l'étendue de synchronisation sont les suivantes :

    1. Créez une instance de la classe SqlSyncScopeProvisioning basée sur l'objet DbSyncScopeDescription et une connexion à la base de données serveur. La classe SqlSyncScopeProvisioning représente l'approvisionnement d'une base de données SQL Server pour une étendue particulière représentée par un objet DbSyncScopeDescription.

    2. Appelez la méthode SetCreateTableDefault(DbSyncCreationOption) en indiquant la valeur DbSyncCreationOption comme étant Skip car la table Products existe déjà dans la base de données serveur. 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.

    3. 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 serveur.

    // create a server scope provisioning object based on the ProductScope
    SqlSyncScopeProvisioning serverProvision = new SqlSyncScopeProvisioning(serverConn, scopeDesc);
    
    // skipping the creation of table since table already exists on server
    serverProvision.SetCreateTableDefault(DbSyncCreationOption.Skip);
    
    // start the provisioning process
    serverProvision.Apply();
    
  13. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur ProvisionServer, puis cliquez sur Générer.

  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 le nœud SyncDB, développez 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 de base de données, 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.Data;
using System.Data.SqlClient;

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

namespace ProvisionServer
{
    class Program
    {
        static void Main(string[] args)
        {
            // create connection to the server database
            SqlConnection serverConn = new SqlConnection("Data Source=localhost; Initial Catalog=SyncDB; Integrated Security=True");

            // define a new scope named ProductsScope
            DbSyncScopeDescription scopeDesc = new DbSyncScopeDescription("ProductsScope");

            // get the description of the Products table from SyncDB dtabase
            DbSyncTableDescription tableDesc = SqlSyncDescriptionBuilder.GetDescriptionForTable("Products", serverConn);

            // add the table description to the sync scope definition
            scopeDesc.Tables.Add(tableDesc);

            // create a server scope provisioning object based on the ProductScope
            SqlSyncScopeProvisioning serverProvision = new SqlSyncScopeProvisioning(serverConn, scopeDesc);

            // skipping the creation of table since table already exists on server
            serverProvision.SetCreateTableDefault(DbSyncCreationOption.Skip);

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

Voir aussi

Autres ressources

Procédure : configurer et exécuter la synchronisation de bases de données (SQL Server)

Approvisionnement pour la synchronisation (SQL Server)