0

我正在开发一个具有庞大数据库的应用程序,其中包含许多具有数十亿行的表。我有分布在全球各地的开发团队。他们需要出于各种目的访问生产数据库。他们已被授予对 DB 的只读权限。如果您使用查询,它工作正常with (nolock)。但是,如果您不使用nolock,您可以通过运行一些永无止境的查询来关闭整个应用程序。去年发生了几次,所以现在我犹豫是否授予新开发人员许可。

我知道with (nolock)为每个表创建一个视图并仅授予这些视图权限是一种解决方案,但不知何故我不想为此创建 200 个视图。

我正在寻找一种方法:

  1. 以使所有查询在没有锁定该用户的情况下运行的方式授予权限,或者
  2. 强制用户使用with (nolock)

我们使用的是 SQL Server 2008 R2。

PS:到目前为止,我从未遇到过另一个基于 Oracle 的应用程序的问题,它比这个应用程序大 50 倍。

4

1 回答 1

0

如果您使用的是 Enterprice 版本,您可以尝试使用资源管理器。设置查询执行的最长时间。这并不是您真正要求的,但它可以解决永无止境的查询问题。你可以看看这里(场景2)。

而且您还可以查看更改数据库属性的方向(使用快照隔离)-这可能就是为什么在 Oracle 中您没有遇到此类问题的原因-Oracle 默认使用此功能,但对于 SQL Server,它是相对较新的功能(> = 2005) . 不过应该小心,因为它会影响 tempdb。

于 2013-07-11T07:18:10.170 回答