SQL Server如何控制同一数据库上客户端之间的数据访问

SQL Server如何控制同一数据库上客户端之间的数据访问,sql,sql-server,sql-server-2005,design-patterns,Sql,Sql Server,Sql Server 2005,Design Patterns,我们的系统有两个客户端(这将增加)。这两个客户端连接到同一个服务器/数据库,但是它们都不能看到其他敏感信息。但是,存在一些共享的非敏感信息 还有一个行政部门代表两个客户工作。允许他们查看所有敏感数据 目前,我们通过对有问题的表持有ClientID来处理这个问题,并混合使用视图和查询来检查ClientID以控制每个客户端的访问 我想在我们的系统中对此进行一致的处理,例如所有视图或所有查询,但我只是想知道是否有比使用视图更容易/更好的模式来处理这种情况 我们使用的是Sql Server 2005,但

我们的系统有两个客户端(这将增加)。这两个客户端连接到同一个服务器/数据库,但是它们都不能看到其他敏感信息。但是,存在一些共享的非敏感信息

还有一个行政部门代表两个客户工作。允许他们查看所有敏感数据

目前,我们通过对有问题的表持有ClientID来处理这个问题,并混合使用视图和查询来检查ClientID以控制每个客户端的访问

我想在我们的系统中对此进行一致的处理,例如所有视图或所有查询,但我只是想知道是否有比使用视图更容易/更好的模式来处理这种情况

我们使用的是Sql Server 2005,但是可以升级到2008


喝彩

最合乎逻辑的方法是让(索引)视图按每个用户所能看到的内容进行过滤。 为每个客户端的视图添加读/写权限。管理员直接访问这些表

但在我看来,每个客户机都是一个逻辑上与其他客户机分离的实体。 如果是这样的话,你可能会考虑每个客户拥有1分贝和共享的东西1分贝。 管理员可以访问所有内容,每个客户机CA只能访问自己的数据库并从公共数据库读取数据


第三种选择是查看模式,并在那里分离您的客户。

我们在MS reporting Services中处理报告的确切方式;我们有通过SPID连接到表的视图,这些表在执行时确定对行级别数据的权限。您通过SPID连接吗?因此,每当新用户连接时,您都会填充spid表?因此,如果我们有50个客户端,那么管理员的应用程序需要连接到所有50个数据库?我看到人们使用这个选项。你必须决定这对你的案子是否合适。无论如何,谢谢你的回答。这对我没有帮助,但我知道你的建议。