sql >> Databasteknik >  >> RDS >> Sqlserver

Byta namn på en kolumn utan att bryta skript och lagrade procedurer

Tja, det finns ett gäng verktyg från tredje part som lovar den här typen av "säkert namnbyte", några gratis och andra inte:

  • ApexSQL har ett gratis verktyg för det, som MWillemse skrev i sitt svar,
  • RedGate har ett kommersiellt verktyg som heter SQLPrompt som också har ett säkert namnbyte, men det är långt ifrån gratis.
  • Microsoft har ett Visual Studio-tillägg som heter SQL-serverdataverktyg (eller SSDT i den korta versionen), som Dan Guzman skrev i sin kommentar.

Jag måste säga att jag aldrig har provat något av dessa specifika verktyg för den specifika uppgiften, men jag har viss erfarenhet av SSDT och några av RedGates produkter och jag anser dem vara mycket bra verktyg. Jag vet ingenting om ApexSQL.

Ett annat alternativ är att försöka skriva sql-skriptet själv, men det finns ett par saker att ta hänsyn till innan du börjar:

  • Kan din tabell nås direkt från utanför sql-servern? Jag menar, är det möjligt att någon programvara kör sql-satsen direkt på den tabellen? Om så är fallet kanske du bryter den när du byter namn på den kolumnen, och inget sql-verktyg hjälper i den här situationen.
  • Är dina färdigheter i sql-skript verkligen så bra? Jag anser mig vara ganska erfaren med sql-server, men jag tror att skriva ett skript som det är bortom mina kunskaper. Inte för att det är omöjligt för mig, men det kommer förmodligen att ta för mycket tid och ansträngning för något jag kan få gratis.

Om du bestämmer dig för att skriva det själv finns det några artiklar som kan hjälpa dig i den uppgiften:

Först, Microsofts officiella dokumentation av sys.sql_expression_dependencies .
För det andra, en artikel som heter Olika sätt att hitta SQL Server-objektberoenden som är skriven av en 13 års erfarenhet DBA, och sist men inte minst, en relaterad fråga på StackExchanges databasadministratörs webbplats.

Du kan naturligtvis gå på det säkra sättet Gordon Linoff föreslog i sin kommentar, eller använda synonymer som destinationsdata som föreslås i hans svar, men då måste du manuellt ändra alla kolumnberoenden manuellt, och vad jag förstår , det är det du vill undvika.



  1. Optimerar BESTÄLL EFTER

  2. Vad gör välj 1 från?

  3. mysql limit kollaps, vilket resulterar i datainteraktion

  4. Att få en räkning av två olika uppsättningar rader i en tabell och sedan dela dem