sql >> Database >  >> RDS >> Sqlserver

Een kolom hernoemen zonder de scripts en opgeslagen procedures te verbreken

Welnu, er zijn een aantal tools van derden die dit soort "veilige hernoemen" beloven, sommige gratis en andere niet:

  • ApexSQL heeft een gratis tool daarvoor, als MWillemse schreef in zijn antwoord,
  • RedGate heeft een commerciële tool genaamd SQLPrompt die ook een veilige hernoemingsfunctie hebben, maar het is verre van gratis.
  • Microsoft heeft een visuele studio-invoegtoepassing genaamd SQL Server-gegevenstools (of SSDT in de korte versie), als Dan Guzman schreef in zijn commentaar.

Ik moet zeggen dat ik nog nooit een van deze specifieke tools voor die specifieke taak heb geprobeerd, maar ik heb wel enige ervaring met SSDT en sommige RedGate-producten en ik beschouw ze als zeer goede tools. Ik weet niets over ApexSQL.

Een andere optie is om te proberen het sql-script zelf te schrijven, maar er zijn een aantal dingen waarmee u rekening moet houden voordat u begint:

  • Kan uw tabel rechtstreeks van buiten de sql-server worden benaderd? Ik bedoel, is het mogelijk dat sommige software de SQL-instructie rechtstreeks op die tafel uitvoert? Als dat zo is, zou je het kunnen breken wanneer je die kolom hernoemt, en geen sql-tool zal in deze situatie helpen.
  • Zijn uw SQL-scriptingvaardigheden echt zo goed? Ik beschouw mezelf als redelijk ervaren met sql-server, maar ik denk dat het schrijven van een dergelijk script mijn vaardigheden te boven gaat. Niet dat het voor mij onmogelijk is, maar het zal waarschijnlijk te veel tijd en moeite kosten voor iets dat ik gratis kan krijgen.

Mocht je besluiten het zelf te schrijven, dan zijn er een paar artikelen die je daarbij kunnen helpen:

Ten eerste, officiële Microsoft-documentatie van sys.sql_expression_dependencies .
Ten tweede, een artikel genaamd Verschillende manieren om afhankelijkheden van SQL Server-objecten te vinden dat is geschreven door 13 jaar ervaring in DBA, en last but not least, een gerelateerde vraag op de website van de databasebeheerder van StackExchange.

Je zou natuurlijk de veilige manier kunnen volgen die Gordon Linoff in zijn opmerking suggereerde, of synoniemen gebruiken zoals bestemmingsgegevens die in zijn antwoord worden gesuggereerd, maar dan moet je alle kolomafhankelijkheden handmatig handmatig wijzigen, en van wat ik begrijp , dat is wat je wilt vermijden.



  1. SQLite-weergave maken

  2. mysql gooit onbekende kolom 'mac' in 'veldlijst'

  3. het combineren van mysql AND OR-query's in Codeigniter

  4. @@DATEFIRST – Ontvang de eerste dag van de week in SQL Server