如何强制sql server登录的nolock提示

如何强制sql server登录的nolock提示,sql,sql-server,security,sql-server-2005,query-optimization,Sql,Sql Server,Security,Sql Server 2005,Query Optimization,有人知道有什么方法可以强制对某个用户发出的所有事务执行nolock提示吗?我想为支持团队提供一个登录名来查询生产系统,但我想通过强制对他们所做的一切进行nolock来保护它。我正在使用SQL Server 2005。您可以为支持团队创建一个有限的用户,然后使用nolock提示编写存储过程或视图。然后只允许访问这些内容,而不是直接访问table select。正如Espo所暗示的,我很确定没有直接的方法来满足您的要求。正如他所说,您可以通过将用户访问权限限制在只有内置NOLOCK代码的进程上来实现

有人知道有什么方法可以强制对某个用户发出的所有事务执行nolock提示吗?我想为支持团队提供一个登录名来查询生产系统,但我想通过强制对他们所做的一切进行nolock来保护它。我正在使用SQL Server 2005。

您可以为支持团队创建一个有限的用户,然后使用nolock提示编写存储过程或视图。然后只允许访问这些内容,而不是直接访问table select。

正如Espo所暗示的,我很确定没有直接的方法来满足您的要求。正如他所说,您可以通过将用户访问权限限制在只有内置NOLOCK代码的进程上来实现这一点。

您可以配置支持人员的SQL Management Studio,将默认事务隔离级别设置为“读取未提交”(工具->选项->查询执行->SQL Server->高级)。这在功能上与对所有内容都有NOLOCK提示相同


缺点是,您必须为您的支持团队的每个成员执行此操作,并且他们可以更改SQL Management Studio上的配置。

不幸的是,将用户限制为SP无法达到此目的。我希望有某种方法可以让他们查询所有问题,从而提高他们的故障排除技能。谢谢你们的帮助。

这是一种痛苦和令人讨厌的方式,但这正是我工作的地方。我们还使用经典的asp,所以我们使用内联sql调用。实际上,我们将sql调用包装在一个函数中(这里您可以检查特定用户),并在调用的开头添加“SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED”


我相信这在功能上与无锁提示相同。很抱歉,我没有一个纯SQL的答案,我很想听听您是否找到了一个很好的方法来实现这一点。

好的,您需要澄清您在这里试图做什么

如果您试图减少对数据库的锁定,并可能向您的支持用户提供可能永远不会在数据库中提交的数据。虽然允许他们向数据库写入任何他们想要的内容,但nolock是一种方法。您将获得额外的好处,即您的用户仍然能够使用SET TRANSACTION isolation level命令提高其隔离级别

如果您试图限制它们在对DB运行stuff时可能造成的损害,请查看实现安全性,确保它们只允许对表进行读取访问,并查看剥离对存储过程和函数的所有访问


我发现NOLOCK在堆栈溢出上被严重误解

他们通过什么查询数据库?通常使用SQL Server Management Studio。然而,我知道他们中的一些人使用松鼠。你能澄清一下你在这里想要实现什么吗?您是否正在尝试保护数据库上的数据?这样做可能是允许他们编写所需sql但仍能保护数据库的最佳方式。每次查询时我是否必须运行“SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED”(设置事务隔离级别读取未提交)?您救了我的命