Часто в моем коде на C # я могу изменить имя переменной, и все ссылки на нее также изменятся.
Есть ли аналогичная функция, которая позволяет мне делать это с объектами на серверах SQL? Некоторые из моих таблиц, столбцов и хранимых процедур нуждаются в переименовании, но, конечно, я хочу, чтобы все это работало.
В: Существуют ли приложения и функции для этого?
Да.
В: Стоит ли их использовать?
Возможно нет. Проблема с SQL состоит в том, что чрезвычайно сложно уловить все ссылки на имена объектов.
Одним из примеров является динамический SQL - метод построения строк с последующим выполнением строки как запроса. Моя хранимая процедура может иметь такой код:
DECLARE @StringToExecute
SET @StringToExecute = 'SELECT * FROM dbo.'
SET @StringToExecute = @StringToExecute + 'MyTableName;'
EXEC (@StringToExecute);
Если вы хотите переименовать dbo.MyTableName как что-то еще, вам нужно будет просмотреть строки внутри хранимых процедур и кода приложения. Это действительно сложно сделать, потому что это также верно:
DECLARE @StringToExecute
SET @StringToExecute = 'USE Database1;'
SET @StringToExecute = @StringToExecute = 'SELECT * FROM dbo.'
SET @StringToExecute = @StringToExecute + 'MyTableName;'
EXEC (@StringToExecute);
SET @StringToExecute = 'USE Database2;'
SET @StringToExecute = @StringToExecute = 'SELECT * FROM dbo.'
SET @StringToExecute = @StringToExecute + 'MyTableName;'
Это создает два разных запроса для двух разных MyTableName в двух разных базах данных.
Другой пример - запросы связанного сервера. Любой из ваших других серверов SQL может быть настроен со связанными серверами, синонимами, представлениями и т. Д. Для запроса ваших существующих объектов.
Таким образом, изменение имени объекта и рефакторинг таблицы - это то, что вы можете делать только в следующих случаях:
Если вы говорите о Linq to SQL и изменяете определения объектов LINQ в Visual Studio, то типичный способ их обновления - удалить и повторно добавить их в конструктор, а затем найти их ссылки и обновить их до новых имен. Если вы используете DI и что-то вроде шаблона репозитория, это довольно просто, поскольку все ссылки находятся в одной области, а не распределены по всему вашему коду.
Если вы хотите что-то купить, похоже, Красные ворота есть что-то прямо в вашем переулке.
Советую попробовать SQL Complete Он позволяет улучшить читаемость кода, давая содержательные и самоочевидные имена для таблиц, столбцов, временных таблиц и столбцов, представлений, хранимых процедур и функций. SQL Complete автоматически исправит все ссылки на переименованные объекты.
С помощью функции переименования вы также можете изменить имена локальных и SQLCMD переменных за пару секунд. Предварительный просмотр изменений кода в удобном древовидном представлении диалогового окна «Переименовать».