繁体   English   中英

在SQL Server中授予(nolock)权限为ReadOnly

[英]Grant ReadOnly with (nolock) permission in SQL Server

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

我知道为每个表创建一个with (nolock)的视图并仅向那些视图授予权限是一种解决方案,但是以某种方式,我不希望为此目的创建200个视图。

我正在寻找一种方法来:

  1. 以某种方式授予权限,以便该用户或
  2. 强制用户使用with (nolock)

我们正在使用SQL Server 2008 R2。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM