Е, има куп инструменти на трети страни, които обещават този тип „безопасно преименуване“, някои безплатни, а други не:
- ApexSQL разполага с безплатен инструмент за това, като MWillemse написа в отговора си,
- RedGate има комерсиален инструмент, наречен SQLPrompt които също имат функция за безопасно преименуване, но далеч не са безплатни.
- Microsoft има добавка за визуално студио, наречена Инструменти за данни на SQL Server (или SSDT в кратката версия), като Дан Гузман пише в коментара си.
Трябва да кажа, че никога не съм опитвал нито един от тези специфични инструменти за тази конкретна задача, но имам известен опит с SSDT и някои от продуктите на RedGate и ги смятам за много добри инструменти. Не знам нищо за ApexSQL.
Друг вариант е да опитате да напишете sql скрипта сами, но има няколко неща, които трябва да вземете под внимание, преди да започнете:
- Може ли вашата таблица да бъде достъпна директно извън sql сървъра? Искам да кажа, възможно ли е някакъв софтуер да изпълнява sql израз директно на тази таблица? Ако е така, може да го счупите, когато преименувате тази колона, и никакъв sql инструмент няма да помогне в тази ситуация.
- Наистина ли вашите умения за sql скриптове са толкова добри? Смятам, че имам доста опит с sql сървър, но смятам, че писането на подобен скрипт е извън моите умения. Не че е невъзможно за мен, но вероятно ще отнеме твърде много време и усилия за нещо, което мога да получа безплатно.
Ако решите да го напишете сами, има няколко статии, които могат да ви помогнат в тази задача:
Първо, официалната документация на Microsoft за sys.sql_expression_dependencies
.
Второ, статия, наречена Различни начини за намиране на зависимости на обекти на SQL Server
което е написано от 13-годишен опитен DBA и не на последно място, свързан въпрос
на уебсайта на администратора на база данни на StackExchange.
Бихте могли, разбира се, да използвате безопасния начин, предложен от Гордън Линоф в неговия коментар, или да използвате синоними като данни за местоназначение, предложени в отговора му, но тогава ще трябва ръчно да промените ръчно всички зависимости на колоните и доколкото разбирам , това е, което искате да избегнете.