我的大四学生告诉我,对于SQL查询,默认情况下执行不会锁定表。
但是我的SSRS报告存在一些问题,似乎在锁定和出错方面遇到了一些问题。
我做了一些谷歌搜索但没有找到任何东西。
只是寻找确认SSRS报告实际上会锁定正在查询的所有表吗?
是否有任何MSDN文档专门记录此行为?
答案 0 :(得分:5)
SSRS不会自行锁定任何内容。锁定将由报告中嵌入的您的查询驱动。没有人可以回答这个问题,但你看看报告和使用的查询,然后看看他们是否锁定表。
通常,查询会锁定表中的数据,而不是表。一致,正确,报告绝对需要锁定。不要屈服于添加NOLOCK提示并将其称为一天you will get incorrect results的谬论。
如果您发现报告引起的生产争用,那么有很多解决方案。使用Availability Groups,database snapshot或standby log shipping server将报告卸载到只读服务器。另一种方法是enable row versioned isolation levels like SNAPSHOT。
答案 1 :(得分:0)
肯定会锁定表。
您可以使用NOLOCK并编写一个特定查询,并在报告中显示所需的列。
此处您的选择查询必须没有“*”,其中包含列名称。