J'ai lu le document " Editions et fonctionnalités prises en charge de SQL Server 2017 " de Microsoft pour comparer les différences de fonctionnalités entre l'édition Enterprise et l'édition Standard.
Deux choses non disponibles dans Standard qui ont attiré mon attention étaient:
Indexation en ligne
Changement de schéma en ligne
Cela signifie-t-il que vous ne pouvez pas créer et modifier des index ou des tables (et d'autres objets?) Sans mettre la base de données hors ligne au préalable, ou Microsoft signifie-t-il qu'il n'y a que des opérations spécifiques que vous ne pouvez pas faire et si oui, où puis-je en savoir plus sur quelles opérations nécessitent de mettre la base de données hors ligne?
La confusion semble être avec le verbiage - en ligne/hors ligne est une sorte de confusion dans ce contexte.
Il indique si les opérations en cours (réindexation ou modification de table) sont effectuées en ligne ou non, et non si l'état de l'objet est en ligne ou hors ligne. En ligne signifie que l'objet n'a pas de verrou exclusif sur lui, et est donc éventuellement accessible à d'autres requêtes/opérations. Hors ligne signifie qu'il est verrouillé par l'opération et ne peut pas être touché par d'autres requêtes, quoi qu'il arrive.
L'avantage pour Enterprise est que je peux effectuer mes modifications de schéma ou la maintenance d'index et ne pas (potentiellement) nuire aux autres requêtes en cours d'exécution. Cela ne signifie pas que autres , moins restrictifs, les verrous ne seront pas pris (niveau ligne, niveau page), mais cela signifie que je ' Je ne suis pas totalement exclu de l'objet. Cela ne garantit pas que les choses continueront à fonctionner de la même manière, car de nombreux autres facteurs jouent un rôle. Consultez les commandes individuelles que vous souhaitez exécuter pour voir les innombrables options pouvant affecter les comportements de verrouillage.
Par exemple, j'ai vu une réorganisation d'index en ligne finir efficacement verrouiller la table de toutes les autres instructions SELECT
jusqu'à ce que j'aie réglé le MAXDOP
qu'il utilisait, même s'il ne prenait pas de verrou sur toute la table.
Un objet ne peut pas être mis en ligne ou hors ligne, bien qu'une base de données le puisse (mais pas pertinent pour ce sujet).
Ressources:
Non, vous n'avez pas besoin de mettre votre base de données hors ligne, ni même de mettre un objet hors ligne manuellement (comment?) Avant de modifier une table ou de créer un index.
Sur la version standard, SQL Server verrouille votre objet (c'est-à-dire la table) jusqu'à ce que la création de l'index ou la modification de la table soit terminée.
Si vous disposez de l'édition Enterprise, vous pouvez spécifier l'option WITH (ONLINE=ON)
pour modifier les tables ou créer des index, afin que vous puissiez toujours accéder à (SELECT) votre objet même pendant l'exécution de l'opération de création d'index. C'est vraiment utile si vous avez de gros objets ou si vous n'avez pas de fenêtre de maintenance.