我想问几个关于 SQL Server 锁定机制的问题
如果我没有在 SQL 语句中使用锁定提示,SQL Server 默认使用 PAGELOCK 提示。我对吗???如果是,那为什么?可能是由于管理太多锁的因素,这是我唯一认为的缺点,但如果还有其他问题,请告诉我。并告诉我是否可以更改此默认行为,如果它是合理的。
我正在编写一个服务器端应用程序,一个同步服务器(不使用同步框架),我已经在 C# 代码文件中编写了数据库查询并使用 ODBC 连接来执行它们。现在的问题是将默认锁定从 Page 更改为 Row 的最佳方法是牢记缺点(例如,在查询中添加锁定提示,这是我的计划)。
如果在没有事务范围的情况下执行 sql 查询(SELECT/DML)并且语句包含锁提示,那么将获取什么样的锁(例如共享、更新、独占)?并且在事务范围内,如果正在使用 ROWLOCK 提示,事务的隔离级别是否会影响锁定类型。
最后,如果有人能给我样本,我可以自己测试和体验上述所有场景(例如点网代码或 sql 脚本)
谢谢穆巴沙尔