我们有一个应用程序,该数据库依赖于SQL Server 2000.该应用程序的一个特定区域允许用户访问表中不应该存在的行:它们应该只访问来自供应商的行,而不能访问来自客户的行。 供应商和客户都存储在一张桌子上。 我们不能改变应用程序的这个特定区域来限制访问,供应商不会在不久的将来改变它。
所以,作为DBA,我正在考虑在数据库上创build一个解决scheme(直到供应商创build最终解决scheme):
有了这个可能的解决scheme,用户将以新用户身份login到数据库。 涉及表FOOBAR的任何语句都会由于缺省模式而自动涉及到newuser.FOOBAR 。
我做了一些testing,似乎工作。 表dbo.FOOBAR有一个UPDATE / INSERT / DELETE触发器,它似乎在更新,插入和删除使用视图后工作。
我的问题是:这是一个强制执行安全访问不改变应用程序的首选方式? 有什么需要注意的吗? 有这个问题的另一个解决scheme吗?
TIA!
只要应用程序保持正常工作,这个方法似乎是一个可行的解决scheme。 这可能不是首选解决scheme,因为在执行由DBO运行的任何升级时需要小心,并且如果将新列添加到dbo.FOOBAR表(实际上是FUBAR),那么您将重新构build新用户.FOOBAR视图,以便它拾取新的列。