我正在开发一个带有大量数据库的应用程序,其中包含大量数十亿行的表。我分布在全球各地的开发团队。他们需要出于各种目的访问生产数据库。他们已被授予DB的只读权限。
如果您使用查询with (nolock)
,它可以正常工作。但是如果你没有使用nolock
,你可以通过运行一些永无止境的查询来降低整个应用程序。它在去年发生了几次,所以现在我犹豫是否允许新开发者。
我知道为每个表创建一个视图with (nolock)
并仅授予这些视图的权限是一种解决方案,但不知何故我不想为此目的创建200个视图。
我正在寻找一种方法:
with (nolock)
我们正在使用SQL Server 2008 R2。
PS:到目前为止,我从未遇到过这个问题与另一个基于Oracle的应用程序相比,这个应用程序比这个应用程序大50倍。
答案 0 :(得分:0)
如果您使用的是Enterprice版本,则可以尝试使用资源调控器。设置查询执行的最长时间。这不是你要求的,但它会解决永无止境的查询问题。您可以查看here(方案2)。
您还可以查看更改数据库属性的方向(Using Snapshot Isolation) - 这可能就是为什么在Oracle中您没有遇到过这样的问题 - 默认情况下Oracle使用它,但对于SQL Server它是相对较新的功能(大于= 2005)。但应该小心,因为它会影响tempdb。