Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Renommer une colonne sans casser les scripts et les procédures stockées

Eh bien, il existe un tas d'outils tiers qui promettent ce type de "renommage sûr", certains gratuits et d'autres non :

  • ApexSQL dispose d'un outil gratuit pour cela, comme MWillemse a écrit dans sa réponse,
  • RedGate a un outil commercial appelé SQLPrompt qui ont également une fonction de renommage sûre, mais c'est loin d'être gratuit.
  • Microsoft propose un complément Visual Studio appelé Outils de données SQL Server (ou SSDT dans la version courte), comme Dan Guzman écrit dans son commentaire.

Je dois dire que je n'ai jamais essayé aucun de ces outils spécifiques pour cette tâche spécifique, mais j'ai une certaine expérience avec SSDT et certains des produits de RedGate et je les considère comme de très bons outils. Je ne connais rien à ApexSQL.

Une autre option consiste à essayer d'écrire le script sql vous-même, mais il y a quelques éléments à prendre en considération avant de commencer :

  • Votre table est-elle accessible directement depuis l'extérieur du serveur sql ? Je veux dire, est-il possible qu'un logiciel exécute une instruction sql directement sur cette table? Si tel est le cas, vous risquez de le casser lorsque vous renommez cette colonne, et aucun outil sql ne vous aidera dans cette situation.
  • Vos compétences en script SQL sont-elles vraiment bonnes ? Je me considère comme assez expérimenté avec SQL Server, mais je pense qu'écrire un script comme celui-ci dépasse mes compétences. Non pas que ce soit impossible pour moi, mais cela prendra probablement trop de temps et d'efforts pour quelque chose que je peux obtenir gratuitement.

Si vous décidez de l'écrire vous-même, quelques articles pourraient vous aider dans cette tâche :

Tout d'abord, la documentation officielle de Microsoft sur sys.sql_expression_dependencies .
Deuxièmement, un article intitulé Différentes façons de trouver des dépendances d'objets SQL Server qui est écrit par un DBA de 13 ans d'expérience, et enfin, une question connexe sur le site Web de l'administrateur de la base de données de StackExchange.

Vous pouvez, bien sûr, suivre la méthode sûre suggérée par Gordon Linoff dans son commentaire, ou utiliser des synonymes tels que destination-data suggéré dans sa réponse, mais vous devrez alors modifier manuellement toutes les dépendances de colonnes manuellement, et d'après ce que je comprends , c'est ce que vous voulez éviter.