2009-11-19 54 views
0

对于某些用户,使用SQL Server,拒绝访问比特定日期更早的数据的简单而有效的方法是什么?SQL Server:拒绝sql用户访问旧数据的最佳方法

我们可以在应用程序级别(网络应用程序)执行此操作,但这会使我们容易受到IIS在我们的应用程序中被黑客入侵或出现错误等情况的影响。理想情况下,只有特定的SQL用户才能访问比几个月更早的特定数据。用最少的手段达到这个目标的好方法是什么?

如果它有所作为,我们的应用程序使用NHibernate。

回答

2

纯SQL的解决方案是创建一个视图是这样的: -

CREATE USERVIEW AS (SELECT * FROM REALTABLE WHERE CREATE_DATE > CURRENT_DATE() - 30 DAYS) 

不知道有多好这起与Hibernate,当然还有“CURRENT_DATE() - 30 DAYS”只会在合法DB2需要为每个DBMS使用不同的函数和语法。

+0

+1视图 - 这似乎是它的理想场景。 – 2009-11-19 09:11:01

0

SQL Server不提供行级安全性。这意味着您无法将SELECT授予某些行(比日期更新),同时拒绝给其他行。所有的GRANT/DENY/REVOKE都在整个桌面上工作。

有一些建议的解决方法,如使用视图,请参阅Granting Row-Level Permissions in SQL Server,但它们很麻烦且难于使用(特别是如果数据也要更新)。

如果可能,最好的办法是将数据移动到不同的表中。

0

您可以将旧数据存档到拥有更多受限制访问权限的表吗?

相关问题