Bonjour,
Je cherche une manière de renommer une table stockée dans une base de données autre que celle à partir de laquelle est effectuée la demande.
Cette demande intervient dans le cadre du développement d'un module de traçabilité. Je travaille donc avec deux bases de données, situées sur la même instance SQL Server :
- DB_APPLICATIVE : base contenant toutes les tables de l'application.
- DB_TRACABILITE : base contenant une copie (sans les données) de chaque table dont les données doivent être tracées.
Les tables de la base DB_TRACABILITE sont remplies grâce à des triggers déclenchés sur la base DB_APPLICATIVE. Dans certains cas j'ai besoin de renommer l'une des tables de la base DB_TRACABILITE. Ce traitement est lancé par le biais d'une procédure stockée de la base principale.
Il m'est donc impossible d'utiliser la procédure stockée système "sp_rename", même en indiquant le nom complet ([DB_TRACABILITE].[dbo].[TB_NAME]) pour le paramètre @oldname. Cela est normal car la documentation indique que cette procédure travaille sur la base actuelle.
Je peux très bien faire un SELECT * INTO TB_NAME_NEW FROM TB_NAME puis supprimer TB_NAME, mais je suppose que cela peut prendre plus de temps si la table contient beaucoup de données.
Quelqu'un aurait-il une meilleure solution/suggestion ?
Partager