我试图在报告查询中添加(nolock),当运行时锁定完整的数据库,使其他用户无法使用数据库。
在这种情况下,我无法弄清楚如何使用:
-- this is just an example:
SELECT FIELDS FROM (SELECT * FROM ATABLE) AS SUB
这会出现语法错误:
SELECT FIELDS FROM (SELECT * FROM ATABLE) WITH (NOLOCK) AS SUB
将WITH (NOLOCK)
shuold放在哪里?
我不是说这是一个解决所有问题的方法,它只是我想要的一个测试。
谢谢!
答案 0 :(得分:2)
如果涉及更多的表并且多个查询被激活并且您不关心脏读,那么将事务的隔离级别设置为read uncommited
而不是写入<{1}}无处不在
Nolock
答案 1 :(得分:1)
我会把它放在这里,但需要注意的是你正在使用一个视图,所以它应该放在视图中的表格上:
SELECT FIELDS FROM (SELECT * FROM MYVIEW WITH (NOLOCK)) AS SUB
答案 2 :(得分:1)
如果您关心准确性,则不应将其放在报告的任何位置。这个提示有一些非常有趣的事情,很多人都不太了解。 http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/
但是如果你继续死机,表格提示就属于桌子旁边。当然,因为这是一种观点,所以它不会有太大帮助。
SELECT FIELDS FROM (SELECT * FROM MYVIEW WITH (NOLOCK)) AS SUB