Sql server 如何使用MS Sync Framework筛选特定于客户端的数据?

Sql server 如何使用MS Sync Framework筛选特定于客户端的数据?,sql-server,microsoft-sync-framework,Sql Server,Microsoft Sync Framework,假设我有一个SQL 2008数据库表,其中有许多与两个不同客户(客户a和客户B)相关的记录 我想构建一个胖客户机应用程序,该应用程序根据请求用户的凭据获取特定于客户a或客户B的所有记录,然后将获取的记录存储在临时本地表中 考虑到我可能会使用MS Sync框架来实现这一点,我开始阅读有关行过滤的内容,当时我遇到了一个小问题: 不要依靠过滤来保证安全性。 从数据库中筛选数据的能力 基于客户端或用户ID的服务器是 不是安全功能。换句话说 换句话说,这种方法不能用于 阻止一个客户端读取数据 那是属于另一

假设我有一个SQL 2008数据库表,其中有许多与两个不同客户(客户a和客户B)相关的记录

我想构建一个胖客户机应用程序,该应用程序根据请求用户的凭据获取特定于客户a或客户B的所有记录,然后将获取的记录存储在临时本地表中

考虑到我可能会使用MS Sync框架来实现这一点,我开始阅读有关行过滤的内容,当时我遇到了一个小问题:

不要依靠过滤来保证安全性。 从数据库中筛选数据的能力 基于客户端或用户ID的服务器是 不是安全功能。换句话说 换句话说,这种方法不能用于 阻止一个客户端读取数据 那是属于另一个客户的。这 过滤类型仅对以下情况有用: 对数据进行分区并减少 降低到的数据量 客户端数据库

那么,这是否告诉我,当您想要在点a和点B之间复制整个表时,MS Sync框架只是一个好的选择

这似乎不是该框架的一个非常有限的特性吗?还是我只是错误地解释了这句话?或者是否有其他方法使用该框架来实现我的目的

有人吗


谢谢

不,这只是一个安全警告

我们在半连接应用程序中广泛使用过滤

以下是一些让您开始学习的代码:

//helper
void PrepareFilter(string tablename, string filter)
{
  SyncAdapters.Remove(tablename);

  var ab = new SqlSyncAdapterBuilder(this.Connection as SqlConnection);
  ab.TableName = "dbo." + tablename;
  ab.ChangeTrackingType = ChangeTrackingType.SqlServerChangeTracking;
  ab.FilterClause = filter;
  var cpar = new SqlParameter("@filterid", SqlDbType.UniqueIdentifier);
  cpar.IsNullable = true;
  cpar.Value = DBNull.Value;
  ab.FilterParameters.Add(cpar);

  var nsa = ab.ToSyncAdapter();
  nsa.TableName = tablename;

  SyncAdapters.Add(nsa);
}

// usage
void SetupFooBar()
{
  var tablename = "FooBar";
  var filter = "FooId IN (SELECT BarId FROM dbo.GetAllFooBars(@filterid))";

  PrepareFilter(tablename, filter);
}

伟大的我真的,真的希望这是我可以安全忽略的事情!我正在实现类似的功能。您在客户端数据库上使用的是什么?紧凑型还是快速型?信息请点击thx。可惜不是快递。这给了我一点小麻烦。