Существуют ли какие-либо серьезные проблемы с использованием EXEC sp_rename '<имя таблицы источника>', '<имя таблицы назначения>'?
Я недавно использовал - EXEC sp_rename '<source table name>', '<destination table name>'
переименовать существующую таблицу и выполнить ее на одном из наших живых серверов. Есть ли проблема в использовании этой процедуры для переименования таблицы? Я спрашиваю об этом, потому что один из наших администраторов баз данных говорит, что будут проблемы с использованием этой процедуры на живом сервере.
4 ответа
Нет большой проблемы с переименованием таблицы с использованием этой процедуры. Единственное, что вам нужно помнить, это то, что во время выполнения этой команды блокировки, применяемые к этой таблице, не позволят вам запрашивать данные, но это займет всего пару миллисекунд, так что с вами все будет в порядке.,
PS Не забудьте изменить ваши взгляды, процедуры, функции и т. Д.:)
Возможно, ваш администратор БД может поделиться деталями своих проблем. Переименование таблицы, конечно, будет серьезным изменением для любых объектов, которые ссылаются на таблицу, поэтому вам нужно будет проявить должную осмотрительность, чтобы гарантировать, что зависимые объекты будут изменены для использования нового имени. Операция переименования также потребует короткой блокировки модификации схемы и аннулирования существующих ссылочных кэшированных планов, поэтому следует помнить об этом, если таблица интенсивно используется.
Ничто не ссылается на таблицу, которую вы переименовываете? Это будет единственный случай, когда я думаю, что переименование таблицы не окажет никакого влияния. Однако если на таблицу ничего не ссылается, какова будет цель таблицы?
Вы можете прочитать больше о sp_rename здесь: http://msdn.microsoft.com/en-us/library/ms188351.aspx
Особо обратите внимание на следующее:
Переименование объекта, такого как таблица или столбец, не будет автоматически переименовывать ссылки на этот объект. Вы должны изменить любые объекты, которые ссылаются на переименованный объект вручную. Например, если вы переименуете столбец таблицы, и на этот столбец ссылаются в триггере, вы должны изменить триггер, чтобы отразить новое имя столбца. Используйте sys.sql_expression_dependencies, чтобы вывести список зависимостей от объекта перед его переименованием.
Ниже приведено единственное предупреждение, описанное на официальном веб-сайте Microsoft.
Изменение любой части имени объекта может привести к поломке скриптов и хранимых процедур. Мы рекомендуем вам не использовать этот оператор для переименования хранимых процедур, триггеров, пользовательских функций или представлений; вместо этого отбросьте объект и заново создайте его с новым именем.
Более подробная информация по адресу: http://msdn.microsoft.com/en-us/library/ms188351.aspx
EXEC sp_rename рекомендуется только в том случае, если мы уверены, что все зависимые функции SP и View не будут затронуты. Убедитесь, что вы изменили или удалили зависимые объекты.