【发布时间】:2013-07-08 23:09:03
【问题描述】:
我正在开发一个具有庞大数据库的应用程序,其中包含许多具有数十亿行的表。我有分布在全球各地的开发团队。他们需要出于各种目的访问生产数据库。他们已被授予对 DB 的只读权限。
如果您使用查询with (nolock),它工作正常。但是,如果您不使用nolock,您可以通过运行一些永无止境的查询来关闭整个应用程序。去年发生了几次,所以现在我犹豫是否授予新开发人员许可。
我知道为每个表创建一个视图with (nolock) 并仅授予这些视图的权限是一种解决方案,但不知何故我不想为此创建 200 个视图。
我正在寻找一种方法:
- 以一种方式授予权限,使该用户的所有查询都在没有锁定的情况下运行,或者
- 强制用户使用
with (nolock)
我们使用的是 SQL Server 2008 R2。
PS:到目前为止,我在使用另一个基于 Oracle 的应用程序时从未遇到过这个问题,它比这个应用程序大 50 倍。
【问题讨论】:
-
@MarcB 设置远程查询的时间限制对我没有帮助。在这个数据库中查询必然需要很长时间。我想要的只是即使开发人员正在读取数据,它也不应该阻止应用程序写入同一个表。这可以通过使用 nolock 或在查询中设置隔离级别来实现,但这取决于开发人员使用它们。我想强迫这个。
标签: sql-server permissions sql-server-2008-r2 locking