Поделиться через


sp_rename (Transact-SQL)

Изменяет имя пользовательского объекта в текущей базе данных. Этот объект может быть таблицей, индексом, столбцом, псевдонимом типа данных или определенным пользователем типом среды CLR Microsoft.NET Framework.

ms188351.Caution(ru-ru,SQL.90).gifВнимание!
Изменение любой части имени объекта может разрушить сценарии и хранимые процедуры. Не рекомендуется использовать эту инструкцию для переименования хранимых процедур, триггеров, пользовательских процедур или представлений; следует удалить объект и создать его повторно с новым именем.

Значок ссылки на разделСоглашения о синтаксисе в Transact-SQL

Синтаксис

sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name' 
    [ , [ @objtype = ] 'object_type' ] 

Аргументы

  • [ @objname = ] 'object_name'
    Текущее полное или неполное имя пользовательского объекта или типа данных. Если переименуемый объект представляет собой столбец в таблице, то имя object_name должно быть указано в виде table.column. Если объект, который следует переименовать, представляет собой индекс, то имя object_name должно иметь вид table.index.

    Кавычки необходимы, только если указан объект с полным именем. Если указано полное имя, включая имя базы данных, то в качестве имени базы данных должно использоваться имя текущей базы данных. Аргумент object_name имеет тип nvarchar(776) и не имеет значения по умолчанию.

  • [ @newname = ] 'new_name'
    Новое имя для указанного объекта. Имя new_name должно быть именем, состоящим из одной части, и соответствовать правилам для идентификаторов. Аргумент newname имеет тип sysname и не имеет значения по умолчанию.

    ms188351.note(ru-ru,SQL.90).gifПримечание.
    Имена триггеров не могут начинаться с символов # или ##.
  • [ @objtype = ] 'object_type'
    Тип объекта, который будет переименован. Аргумент object_type имеет тип varchar(13), не имеет значения по умолчанию и может принимать одно из следующих значений:

    Значение Описание

    COLUMN

    Столбец, который будет переименован.

    DATABASE

    Пользовательская база данных. Этот тип объекта необходим при переименовании базы данных.

    INDEX

    Пользовательский индекс.

    OBJECT

    Элемент типа, отслеживаемого в представлении каталогов sys.objects. Например, значение OBJECT может быть использовано для переименования объектов с ограничениями (CHECK, FOREIGN KEY, PRIMARY/UNIQUE KEY), пользовательских таблиц и правил.

    USERDATATYPE

    Тип данных псевдонима или определенные пользователями типы среды CLR, добавленные выполнением инструкции CREATE TYPE или процедуры sp_addtype.

Значения кодов возврата

0 (успешное завершение) или ненулевое значение (неуспешное завершение)

Замечания

Изменить имя объекта или типа данных можно только в текущей базе данных. Имена большинства системных типов данных и системных объектов изменить нельзя.

Процедура sp_rename автоматически переименовывает ассоциированный индекс каждый раз при переименовании ограничения PRIMARY KEY или UNIQUE. Если переименованный индекс привязан к ограничению PRIMARY KEY, то ограничение PRIMARY KEY также автоматически переименовывается хранимой процедурой sp_rename.

Процедура sp_rename может использоваться для переименования первичных и вторичных XML-индексов.

Переименование хранимой процедуры, функции, представления или триггера не изменит имени соответствующего объекта в столбце definition представления каталога sys.sql_modules. Поэтому не рекомендуется использовать процедуру sp_rename для переименования объектов этих типов. Лучше удалить и создать объект повторно с новым именем.

Переименование такого объекта, как таблица или столбец не приводит к автоматическому переименованию ссылок на этот объект. Необходимо вручную изменить любые объекты, которые ссылаются на переименованный объект. Например, если переименован столбец таблицы и на этот столбец имеется ссылка в триггере, то необходимо изменить триггер, указав новое имя столбца. Используйте представление каталога sys.sql_dependencies, чтобы составить список зависимостей для объекта перед его переименованием.

Разрешения

Для переименования объектов, столбцов и индексов требуется разрешение ALTER на объект. Для переименования определенных пользователем типов требуется разрешение CONTROL на тип. Для переименования базы данных требуется членство в фиксированных серверных ролях sysadmin или dbcreator

Примеры

А. Переименование таблицы

В следующем примере таблица SalesTerritory переименовывается в SalesTerr.

USE AdventureWorks;
GO
EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr';
GO

Б. Переименование столбца

В следующем примере столбец TerritoryID в таблице SalesTerritory переименовывается в TerrID.

USE AdventureWorks;
GO
EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';
GO

В. Переименование индекса

В следующем примере индекс IX_ProductVendor_VendorID переименовывается в IX_VendorID.

USE AdventureWorks;
GO
EXEC sp_rename N'Purchasing.ProductVendor.IX_ProductVendor_VendorID', N'IX_VendorID', N'INDEX';
GO

Г. Переименование псевдонима типа данных

В следующем примере псевдоним типа данных Phone переименовывается в Telephone.

USE AdventureWorks;
GO
EXEC sp_rename N'Phone', N'Telephone', N'USERDATATYPE';
GO

См. также

Справочник

sys.sql_dependencies (Transact-SQL)
sys.sql_modules (Transact-SQL)
Системные хранимые процедуры (Transact-SQL)
Хранимые процедуры ядра СУБД (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005