Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Umbenennen einer Spalte, ohne die Skripts und gespeicherten Prozeduren zu beschädigen

Nun, es gibt eine Reihe von Tools von Drittanbietern, die diese Art der "sicheren Umbenennung" versprechen, einige kostenlos und andere nicht:

  • ApexSQL hat ein kostenloses Tool dafür als MWillemse schrieb in seiner Antwort,
  • RedGate hat ein kommerzielles Tool namens SQLPrompt die auch eine sichere Umbenennungsfunktion haben, die jedoch bei weitem nicht kostenlos ist.
  • Microsoft hat ein Visual Studio-Add-In namens SQL Server-Datentools (oder SSDT in der Kurzversion), als Dan Guzman schrieb in seinem Kommentar.

Ich muss sagen, dass ich noch nie eines dieser speziellen Tools für diese spezielle Aufgabe ausprobiert habe, aber ich habe einige Erfahrung mit SSDT und einigen Produkten von RedGate und halte sie für sehr gute Tools. Ich weiß nichts über ApexSQL.

Eine andere Möglichkeit besteht darin, zu versuchen, das SQL-Skript selbst zu schreiben. Es gibt jedoch ein paar Dinge, die Sie berücksichtigen sollten, bevor Sie beginnen:

  • Kann auf Ihre Tabelle direkt von außerhalb des SQL-Servers zugegriffen werden? Ich meine, ist es möglich, dass eine Software eine SQL-Anweisung direkt auf dieser Tabelle ausführt? Wenn dies der Fall ist, könnten Sie es beschädigen, wenn Sie diese Spalte umbenennen, und kein SQL-Tool wird in dieser Situation helfen.
  • Sind Ihre SQL-Scripting-Kenntnisse wirklich so gut? Ich halte mich für ziemlich erfahren mit SQL Server, aber ich denke, das Schreiben eines solchen Skripts übersteigt meine Fähigkeiten. Nicht, dass es für mich unmöglich wäre, aber es wird wahrscheinlich zu viel Zeit und Mühe für etwas kosten, das ich kostenlos bekommen kann.

Sollten Sie sich entscheiden, es selbst zu schreiben, gibt es einige Artikel, die Ihnen bei dieser Aufgabe helfen könnten:

Zuerst die offizielle Microsoft-Dokumentation von sys.sql_expression_dependencies .
Zweitens ein Artikel namens Verschiedene Methoden zum Auffinden von Abhängigkeiten von SQL Server-Objekten das von einem DBA mit 13 Jahren Erfahrung geschrieben wurde, und nicht zuletzt eine verwandte Frage auf der Website des Datenbankadministrators von StackExchange.

Sie könnten natürlich den sicheren Weg gehen, den Gordon Linoff in seinem Kommentar vorgeschlagen hat, oder Synonyme wie die in seiner Antwort vorgeschlagenen Zieldaten verwenden, aber dann müssen Sie alle Spaltenabhängigkeiten manuell und nach meinem Verständnis ändern , das möchten Sie vermeiden.