Comment puis-je modifier le type sur une table qui a un index dessus? J'ai essayé de faire une alter colonne sur une table vide pour modifier le type de date heure à varchar (15) et j'ai eu des erreurs disant qu'il y avait des dépendances sur la colonne (qui s'est avérée être des index).
J'ai pu facilement contourner cela localement en cliquant avec le bouton droit sur l'index et en créant un script, mais je dois le déployer sur d'autres serveurs où je n'aurai pas accès au nom de l'index.
Existe-t-il un moyen de créer un script qui supprimera n'importe quel index, permettez-moi de modifier ce type de données dans la colonne, puis de lire l'index? Merci!
la source
Pour modifier une colonne, vous devez d'abord supprimer l'index ou toute autre contrainte qui contient cette colonne, puis créer à nouveau l'index / la contrainte. Mais cette tâche doit être effectuée par un administrateur de base de données, car toute baisse d'index ou de contrainte affectera d'une part les données interrogées - pendant que l'index est supprimé, et d'autre part, bloquera l'ensemble de la table pendant le temps où l'index est à nouveau créé. Vous devez vous assurer que les utilisateurs seront conscients de cette petite ou grande maintenance (dépend de la taille de la table). Bonne chance!
Cependant, la création d'index peut être effectuée avec l'option En ligne qui est moins bloquante.
la source
Si vous supprimez d'abord l'index, vous ne pourrez plus le lire, sauf si l'index est recréé. Ce que vous pouvez faire pour désactiver l'application de la contrainte.
Une fois ce script exécuté, la contrainte n'est pas appliquée et vous pouvez entrer des données sans vous soucier des vérifications de contraintes. Vous pouvez à nouveau modifier la table pour réactiver les contraintes.
Les violations précédentes ne seront ni vérifiées ni corrigées, mais toutes les entrées après l'application de la contrainte seront vérifiées.
la source
Il y a 2 erreurs dans la réponse de Niko (2 conditions object_id manquantes). Et pas besoin de
group by
:la source