Ну, есть куча 3 инструментов сторонних производителей, которые являются перспективными этим типом «безопасного переименования», некоторые бесплатно, а некоторые нет:
- ApexSQL имеет free tool для этого, так как MWillemse писал его ответа,
- У RedGate есть коммерческий инструмент под названием SQLPrompt, который также имеет безопасную переименование, но он далеко не свободен.
- Microsoft имеет визуальную студийную надстройку под названием SQL Server Data Tools (или SSDT в короткой версии), так как Dan Guzman написал в своем комментарии.
Должен сказать, что я никогда не пробовал какие-либо из этих конкретных инструментов для этой конкретной задачи, но у меня есть некоторый опыт работы с SSDT и некоторыми продуктами RedGate, и я считаю их очень хорошими инструментами. Я ничего не знаю об ApexSQL.
Другой вариант заключается в попытке написать сценарий SQL самостоятельно, однако есть несколько вещей, чтобы принять во внимание, прежде чем начать:
- Может ли ваша таблица будет доступна непосредственно из вне сервера SQL? Я имею в виду, возможно ли, что какое-то программное обеспечение выполняет оператор sql непосредственно в этой таблице? Если это так, вы можете сломать его, когда вы переименуете этот столбец, и никакая утилита sql не поможет в этой ситуации.
- Действительно ли ваши навыки написания сценариев sql действительно хороши? Я считаю себя достаточно опытным с сервером sql, но я думаю, что писать сценарий, подобный этому, не соответствует моим навыкам. Не то, чтобы это невозможно для меня, но, вероятно, потребуется слишком много времени и усилий для чего-то, что я могу получить бесплатно.
Если вы решили написать его самостоятельно, есть несколько статей, которые могут помочь вам в решении этой задачи:
во-первых, Microsoft официальную документацию sys.sql_expression_dependencies.
Во-вторых, статья под названием Different Ways to Find SQL Server Object Dependencies, написанная 13-летним опытом DBA, и, наконец, a related question на веб-сайте администратора базы данных StackExchange.
Вы можете, конечно, пойти безопасным способом, предложенным Гордоном Линоффом в его комментарии, или использовать синонимы, такие как данные назначения, предложенные в его ответе, но тогда вам придется вручную модифицировать все зависимости столбцов вручную и из того, что я понимаю, это то, чего вы хотите избежать.
Вы можете изменить имя столбца, а затем добавить вычисленный столбец с предыдущим именем столбца и изменить триггеры и хранимые процедуры на досуге. –
Вы можете попытаться получить код сценария из таблиц sys, заменить и перекомпилировать его за один шаг, используя скрипт, но если нет большого количества объектов, я предпочитаю это делать, открывая каждый скрипт ради правильности – jean
Также im MS-SQL вы можете использовать 'alter table dbo.tbBase alter column [OriginalName] UNIQUEIDENTIFIER не null GO' – jean