J.D*_*.D. 7 sql-server standard-edition enterprise-edition online-operations sql-server-2017
我通读了 Microsoft 的“ SQL Server 2017 的版本和支持的功能”文档,以比较企业版和标准版之间的功能差异。
标准版中没有引起我注意的两件事是:
在线索引
在线模式更改
这是否意味着您不能在不先使数据库脱机的情况下创建和修改索引或表(以及其他对象?),或者 Microsoft 是否意味着只有特定的操作您不能执行,如果是这样,我在哪里可以了解更多信息哪些操作需要使数据库脱机?
Low*_*n M 14
混乱似乎与措辞有关 - 在这种情况下,在线/离线有点令人困惑。
它指的是正在执行的操作(重新索引或表更改)是否在线执行,而不是对象的状态是在线还是离线。在线意味着该对象没有排他锁,因此可能可供其他查询/操作访问。离线意味着它被操作锁定,并且无论如何都不能被其他查询触及。
对 Enterprise 的好处是我可以进行架构更改或索引维护,而不会(可能)对正在运行的其他查询产生不利影响。这并不意味着不会采用其他限制性较小的锁(行级、页级),但这确实意味着我并没有完全脱离对象。但是,它并不能保证事情会保持不变,因为还有许多其他因素会影响到这一点。查看您有兴趣运行的单个命令,以查看可能影响锁定行为的无数选项。
例如,我看到在线索引重组最终有效地锁定了所有其他SELECT语句的表,直到我调整了MAXDOP它正在使用的状态,即使它实际上并没有锁定整个表。
对象不能联机或脱机,但数据库可以(尽管与本主题无关)。
资源:
不,在更改表或创建索引之前,您不需要使数据库脱机,甚至不需要手动使某些对象脱机(如何?)。
在标准版本上,SQL Server 将锁定您的对象(即表),直到创建索引或更改表完成。
如果您有企业版,那么您可以指定WITH (ONLINE=ON)更改表或创建索引的选项,这样即使在创建索引操作正在运行时您仍然可以访问 (SELECT) 您的对象。如果您有大型对象或没有维护窗口,这将非常有用。