我们有一个在MSAccess中运行的应用程序,但使用SQL Server作为后端数据库。这将生成一个查询来检查它有权访问哪些视图,对于普通用户来说,这需要18秒的时间。对于作为db_owner角色成员的所有用户,这需要0.2秒。有没有什么方法可以为普通用户调优?也许我可以在Access中做些什么?我不想给他们提供db_owner,而且重写应用程序以不使用访问权限也是不可能的。
下面是查询:
select
object_name(id),
user_name(uid), type,
ObjectProperty(id, N'IsMSShipped'),
ObjectProperty(id, N'IsSchemaBound')
from sysobjects
where type = N'V'
and permissions(id) & 4096 <> 0使用MS Access 2003、SQL Server2008 R2
发布于 2012-04-15 13:07:02
如果找不到问题的根本原因,或许一个变通办法可能会有所帮助?这只是一个想法:您可以将SQL语句封装在db_owner拥有的进程中,并为其提供一个EXECUTE AS子句。这样,当非db_owner调用proc时,proc中的db_owner将在proc的持续时间和作用域的模拟下执行。希望您的非db_owner用户能够从db_owner运行该SQL时看到的性能中受益。
https://stackoverflow.com/questions/10124547
复制相似问题