我正在寻找在SQL Server 2008中唯一标识应用程序用户的不同方法。
为这个问题提供一些支持: 我使用的ASP.NET 4 Web应用程序使用SQL Server 2008数据库,从应用程序到数据库的所有连接都有一个SQL Server登录和数据库用户。
我们正在使用Crystal Reports开发报告解决方案,用户可以通过该应用程序编写和执行自己的报告。水晶报告只能从Views返回数据。每个应用程序用户都有自己唯一的登录服务器。 然后,View使用SELECT SYSTEM_USER()查找登录用户并限制从视图返回的数据。
有关如何唯一识别用户的任何其他建议将不胜感激。 非常感谢
答案 0 :(得分:0)
您是否考虑使用Windows身份验证而不是SQL身份验证?这至少会减少登录次数;需要管理的用户。
答案 1 :(得分:0)
当您使用msql 2008时,Y可以使用外部数据库,文件或其他资源来存储用户对任何数据的访问权限。 http://msdn.microsoft.com/en-us/library/dd392015%28v=sql.100%29.aspx
出于性能和安全原因,为了不将数据与审计元素混合而进行更改。 在sql server和profiler中使用profiler是有关(aplication,user和host)的信息。因此,通过审计或某些数据库对象的自定义触发器可以轻松获得这种信息。
您的应用程序也可以拥有自己的用户表,并且也可以为所有用户共享相同的连接字符串,或者为用户提供仅使用Windows auth类型的公共权限。并在存储过程中使用作为命令运行(在db中作为另一个用户运行)。 因此,您可以记录任何用户并给予他们最小的权利。
我的第一个帖子在这里,我实际上学习英语大声笑。
答案 2 :(得分:0)
我们提出了两种解决方案:
在执行Crystal报表之前,在.Net中我们可以提取SQL报表(和子报表)将生成,执行SQL并将结果放入数据集并从数据集生成报表。这样做的好处是,因为我们拥有SQL,所以在SQL执行之前,我们可以向SQL服务器会话提供用户信息,这些信息可用于在执行SQL时识别用户。
具有可以动态分配给应用程序用户的有限数量的SQL Server用户登录。我们将有一个表,它将在运行Crystal报表之前将SQL Server登录映射到应用程序用户。当他们的查询完成执行时,将释放Login。显然这意味着在繁忙时间我们可能会用完登录,但可以根据使用情况添加更多。