Je dois maintenir et étendre un ancien système hérité qui contient des méthodes de service Web et des tables de base de données qui ne sont plus utilisées. Comme je ne suis pas entièrement sûr que les tables soient vraiment redondantes, j'ai peur de les supprimer.
Existe-t-il un autre moyen d'obtenir le même effet (les tableaux ne peuvent plus être utilisés) sans les supprimer? Mon idée était de les transférer à un schéma différent (par exemple Deleted
) à partir de la valeur par défaut actuelle, dbo
.
IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'Deleted')
BEGIN
EXEC('CREATE SCHEMA Deleted')
END
ALTER SCHEMA Deleted TRANSFER dbo.TableName;
Y a-t-il une autre option ou y a-t-il des inconvénients à l'approche de schéma?
la source
Quelques autres options consistent simplement à renommer les tables, ou si elles ont des index clusterisés, vous pouvez désactiver l'index clusterisé.
la source
Supprimez les autorisations sur la table du (des) rôle (s) / groupe (s) / compte (s) qui [pourraient] l'utiliser.
Si quelque chose explose, remettez-les [rapidement].
Astuce: Utiliser un script pour faire ces changements serait vraiment une très bonne idée.
la source
La suppression des autorisations ne fonctionnera généralement pas car vous ne pouvez pas être CERTAIN que quelqu'un n'a pas d'autorisations. Peut-être à travers un groupe, un rôle ou même parce qu'ils sont administrateurs système (bien que nous espérons que non).
Pour les tableaux, vous pouvez les désactiver. Et c'est un processus rapide. Cependant, pour les activer, vous devez les reconstruire et disposer d'une grande table qui pourrait vous prendre un certain temps.
Votre meilleur pari sera de déplacer l'objet dans un nouveau schéma (comme vous l'avez suggéré) ou de renommer l'objet. Ces deux opérations sont rapides et faciles à faire et à annuler. Les autorisations resteront également en place dans les deux sens.
Une étape supplémentaire que vous pouvez prendre consiste à ajouter une "note TBD" dans les propriétés étendues de l'objet. Vous pouvez noter quand vous avez effectué le changement et / ou toutes les notes que vous pourriez avoir sur les raisons pour lesquelles vous pensez qu'il est sûr de s'en débarrasser.
Tout cela dit que j'exécuterais une session d'événements étendue (ou trace de profileur) pendant quelques jours pour être sûr que tous les objets sont utilisés. Vous pouvez limiter fortement la session uniquement au nom de l'objet et au moment où il a été touché pour réduire la surcharge. Assurez-vous également que vous exécutez cette session pendant quelques jours de chaque côté de la fin du mois et peut-être même de la fin du trimestre pour être sûr d'avoir tout.
la source
Supprimez les autorisations comme le suggère Phil W..
Supprimez également les autorisations de toutes les procédures stockées qui utilisent les tables. Dans SQL Server, (je ne connais pas les autres), les autorisations sont chaînées d'un objet appelant (par exemple la procédure stockée) à l'objet appelé (par exemple une table).
la source