Как разделить конфиденциальные данные клиента с помощью Microsoft Sync Framework (v2 CTP 2)? - PullRequest
3 голосов
/ 26 августа 2009

Наша центральная база данных должна синхронизироваться в режиме хаба и спиц.

Нам необходимо иметь возможность разбивать данные таким образом, чтобы данные клиента реплицировались локально только на этот клиент.

Кто-нибудь сталкивался с этой проблемой?

MSF предоставляет области синхронизации - объявления таблиц должны быть синхронизированы с возможностью указания столбца фильтра и предложения фильтра, однако, похоже, нет способа передать параметр (скажем, clientID) в фильтр.

Вот пример из документации msdn:

        ' Create a scope named "filtered_customer", and add two tables to the scope. 
        ' GetDescriptionForTable gets the schema of each table, so that tracking 
        ' tables and triggers can be created for that table. 
        Dim scopeDesc As New DbSyncScopeDescription("filtered_customer")

        scopeDesc.Tables.Add(SqlSyncDescriptionBuilder.GetDescriptionForTable("Customer", serverConn))
        scopeDesc.Tables.Add(SqlSyncDescriptionBuilder.GetDescriptionForTable("CustomerContact", serverConn))

        ' Create a provisioning object for "filtered_customer" and specify that 
        ' base tables should not be created (They already exist in SyncSamplesDb_SqlPeer1). 
        Dim serverConfig As New SqlSyncScopeProvisioning(scopeDesc)
        serverConfig.CreateTableDefault = DbSyncCreationOption.Skip

        ' Specify which column(s) in the Customer table to use for filtering data, 
        ' and the filtering clause to use against the tracking table. 
        ' "[side]" is an alias for the tracking table. 
        serverConfig("Customer").AddFilterColumn("CustomerType")
        serverConfig("Customer").FilterClause = "[side].[CustomerType] = 'Retail'"

        ' Configure the scope and change tracking infrastructure. 
        serverConfig.Apply(serverConn)

Наша проблема в том, что нам нужен фильтр для исключения clientID в качестве параметра времени выполнения.

Поддерживается ли это в MSF?

Если не возможно, это может быть достигнуто путем объявления нескольких областей действия - объявите область действия для каждого клиента с предложением фильтра, указывающим clientID. Это потребует повторной подготовки сервера каждый раз, когда мы создаем нового клиента .... верно?

Кто-нибудь знает, можно ли использовать класс SqlSyncScopeProvisioning для добавления новой области в базу данных, которая уже была подготовлена ​​с существующей областью?

Похоже, что MSF был разработан для поддержки нескольких областей, мне не ясно, как класс SqlSyncScopeProvisioning используется для добавления дополнительных областей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...