Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Rinominare una colonna senza interrompere gli script e le stored procedure

Bene, ci sono un sacco di strumenti di terze parti che promettono questo tipo di "rinomina sicura", alcuni gratuiti e altri no:

  • ApexSQL ha uno strumento gratuito per questo, come MWillemse ha scritto nella sua risposta,
  • RedGate dispone di uno strumento commerciale chiamato SQLPrompt che hanno anche una funzione di ridenominazione sicura, tuttavia è tutt'altro che gratuito.
  • Microsoft ha un componente aggiuntivo di Visual Studio chiamato Strumenti dati di SQL Server (o SSDT nella versione breve), come Dan Guzman ha scritto nel suo commento.

Devo dire che non ho mai provato nessuno di questi strumenti specifici per quel compito specifico, ma ho una certa esperienza con SSDT e alcuni dei prodotti di RedGate e li considero strumenti molto buoni. Non so nulla di ApexSQL.

Un'altra opzione è provare a scrivere tu stesso lo script sql, tuttavia ci sono un paio di cose da prendere in considerazione prima di iniziare:

  • È possibile accedere alla tabella direttamente dall'esterno del server sql? Voglio dire, è possibile che alcuni software eseguano l'istruzione sql direttamente su quella tabella? In tal caso, potresti interromperlo quando rinomini quella colonna e nessuno strumento sql sarà di aiuto in questa situazione.
  • Le tue capacità di scripting sql sono davvero così buone? Mi considero abbastanza esperto con SQL Server, ma penso che scrivere uno script del genere sia al di là delle mie capacità. Non che sia impossibile per me, ma probabilmente ci vorrà troppo tempo e sforzi per ottenere qualcosa che posso ottenere gratuitamente.

Se decidi di scriverlo tu stesso, ci sono alcuni articoli che potrebbero aiutarti in questo compito:

Innanzitutto, la documentazione ufficiale Microsoft di sys.sql_expression_dependencies .
Secondo, un articolo chiamato Modi diversi per trovare le dipendenze degli oggetti di SQL Server scritto da un DBA di 13 anni di esperienza e, ultimo ma non meno importante, una domanda correlata sul sito Web dell'amministratore del database di StackExchange.

Ovviamente potresti seguire il modo sicuro suggerito da Gordon Linoff nel suo commento, o usare sinonimi come i dati di destinazione suggeriti nella sua risposta, ma poi dovrai modificare manualmente tutte le dipendenze delle colonne manualmente e da quello che ho capito , questo è ciò che vuoi evitare.